成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#具有隱式類型聲明描述

開(kāi)發(fā) 后端
這里介紹C#具有隱式類型聲明,在C# 3.0中可以使用新增的關(guān)鍵字var來(lái)代替聲明中的類型,而由編譯器根據(jù)初始化表達(dá)式來(lái)推斷出變量的類型。

本文向大家介紹C#具有隱式類型聲明,可能好多人還不知道隱式類型聲明,沒(méi)有關(guān)系,看完本文你肯定有不少收獲,希望本文能教會(huì)你更多東西。

C#具有隱式類型聲明

在一個(gè)帶有初始化器的聲明語(yǔ)句中,待聲明的變量的類型是顯而易見(jiàn)的——和初始化表達(dá)式的結(jié)果類型一致。對(duì)于這種情況,在C# 3.0中可以使用新增的關(guān)鍵字var來(lái)代替聲明中的類型,而由編譯器根據(jù)初始化表達(dá)式來(lái)推斷出變量的類型。

  1. var i = 5; // int  
  2. var d = 9.0; // double  
  3. var s = "Hello"; // string  
  4. var a = new int[] { 1, 2, 3, 4, 5 }; // int[]  
  5.  
  6. Console.WriteLine("Type of variable <i>: {0}", i.GetType());  
  7. Console.WriteLine("Type of variable <d>: {0}", d.GetType());  
  8. Console.WriteLine("Type of variable <s>: {0}", s.GetType());  
  9. Console.WriteLine("Type of variable <a>: {0}", a.GetType()); 

上面的代碼在C# 3.0中是符合語(yǔ)法規(guī)則的,前四行代碼就是使用了隱式類型的聲明;而后四行代碼用于在運(yùn)行時(shí)驗(yàn)證各個(gè)變量是否擁有正確的類型。如果在Visual Studio 2005中運(yùn)行這段代碼(為了能夠看到結(jié)果,請(qǐng)使用Ctrl+F5來(lái)編譯并啟動(dòng)程序),會(huì)得到下面的結(jié)果:

  1. Type of variable <i>: System.Int32  
  2. Type of variable <d>: System.Double  
  3. Type of variable <s>: System.String  
  4. Type of variable <a>: System.Int32[] 

這表明,編譯器在編譯的時(shí)候,已經(jīng)正確地推斷了每個(gè)變量的類型,并將其嵌入到了程序集的元數(shù)據(jù)中。

這里有兩個(gè)限制,一是C#具有隱式類型聲明只能作用在局部變量上,二是這種聲明必須有初始化器(即等號(hào)和后面的表達(dá)式)。如果我們企圖在一個(gè)類中聲明一個(gè)具有隱式類型的域,就會(huì)出現(xiàn)一個(gè)編譯錯(cuò)誤:Invalid token ’var’ in class, struct, or interface member declaration;而如果聲明中沒(méi)有出現(xiàn)初始化器,則會(huì)導(dǎo)致另外一個(gè)編譯錯(cuò)誤:’=’ expected。

除了局部變量外,作用域?yàn)橐粋€(gè)塊的數(shù)組也可以運(yùn)用C#具有隱式類型聲明,例如:

  1. var ia = new [] { 1, 2, 3, 4, 5 }; // int[]  
  2. var da = new [] { 1.1, 2, 3, 4, 5 }; // double[]  
  3. var sa = new [] { "Hello", "World" }; // string[]  
  4.  
  5. Console.WriteLine("Type of array <ia>: {0}", ia.GetType());  
  6. Console.WriteLine("Type of array <da>: {0}", da.GetType());  
  7. Console.WriteLine("Type of array <sa>: {0}", sa.GetType()); 

在上面例子的數(shù)組聲明中,在運(yùn)算符new和表示數(shù)組聲明的一對(duì)方括號(hào)之間省略了類型名字,但這在C# 3.0中仍然是符合語(yǔ)法規(guī)則的。編譯器會(huì)通過(guò)成員列表中的值的類型來(lái)推斷數(shù)組的類型。編譯并運(yùn)行上面的例子,會(huì)得到如下的輸出:

  1. Type of array <ia>: System.Int32[]  
  2. Type of array <da>: System.Double[]  
  3. Type of array <sa>: System.String[] 

除了和具有隱式類型的局部變量具有相同的約束外,具有隱式類型的數(shù)組還有必須尊從這樣一個(gè)規(guī)則,即成員列表中的所有值必須是兼容的。也就是說(shuō),成員列表中必須存在這樣一個(gè)值,使得其他值可以隱式地轉(zhuǎn)換為該值的類型。因此,下面的聲明是不符合語(yǔ)法規(guī)則的:

  1. var aa = new [] { 1, "Hello", 2.0, "World" }; 

如果試圖編譯上面的代碼,會(huì)得到一個(gè)編譯錯(cuò)誤:No array type can be inferred from the initializers。這是因?yàn)榫幾g器無(wú)法根據(jù)成員列表中的值來(lái)推斷數(shù)組的類型。

實(shí)際上,盡管C#具有隱式類型聲明使得傳統(tǒng)聲明的編寫(xiě)方法更加便利,然而引入這種聲明方式的真正目的并不在于此,而是為了使局部變量和數(shù)組能夠訪問(wèn)這樣一個(gè)新的語(yǔ)言構(gòu)造:匿名類型。

【編輯推薦】

  1. C# System.Xml集合
  2. C#實(shí)現(xiàn)Strategy接口
  3. C#編寫(xiě)操作TreeView組件剖析
  4. C#實(shí)現(xiàn)IDisposable接口淺析
  5. C#異常處理詳細(xì)剖析
責(zé)任編輯:佚名 來(lái)源: 百度空間
相關(guān)推薦

2009-08-26 15:39:08

C#隱式類型局部變量

2009-09-03 16:55:58

C#引用類型

2009-09-01 18:05:17

C#類型聲明

2009-09-04 10:49:19

C#隱式轉(zhuǎn)換

2023-08-14 08:35:36

2009-08-13 17:04:09

C#語(yǔ)言C#程序

2009-08-17 16:32:34

C# Anonymou

2009-08-18 17:41:22

C# ListView

2009-08-31 13:18:09

C# IWebMess

2009-08-26 17:49:36

C# readonly

2009-08-03 18:08:39

C# ICloneab

2009-08-31 18:32:01

C# ListBoxE

2009-08-03 16:45:02

C#異步Socket

2009-08-20 09:30:03

C#開(kāi)發(fā)WinForm

2009-09-04 14:04:53

C#文檔

2009-08-19 10:09:21

C#和C++

2009-09-01 18:25:32

C#結(jié)構(gòu)實(shí)例

2009-09-04 11:15:07

選擇C#構(gòu)造函數(shù)

2009-09-04 13:22:31

C#實(shí)現(xiàn)多個(gè)接口

2009-09-07 14:33:02

C# switch語(yǔ)句
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 欧美成人在线免费 | 亚洲乱码国产乱码精品精的特点 | 国产一区二区精品在线 | 亚洲视频免费在线观看 | 日韩国产专区 | 久久影音先锋 | 一级黄色片在线看 | 亚洲欧美在线观看 | 久久婷婷香蕉热狠狠综合 | www.婷婷 | 亚洲一区二区视频 | 九九综合九九 | 国产午夜精品一区二区三区四区 | 久久久久久久久久久久久9999 | 福利网站在线观看 | 亚洲福利网站 | 国产在线观 | 夜夜操天天干 | 成人亚洲精品久久久久软件 | 狠狠亚洲 | 精品国产一区二区 | 999久久久久久久久6666 | 国产精品中文字幕一区二区三区 | av片网 | 日韩欧美精品一区 | 久久精品久久久久久 | 特黄特色大片免费视频观看 | 色精品视频 | 91麻豆产精品久久久久久夏晴子 | 国产精品美女久久久久aⅴ国产馆 | 久久久久亚洲精品 | 成人一区二区三区在线观看 | 日韩精品免费在线观看 | 天堂资源| 99国产精品视频免费观看一公开 | 玖玖在线免费视频 | 欧美一区在线视频 | 午夜天堂精品久久久久 | 国产成人精品久久二区二区 | 国产大片一区 | 日韩毛片免费看 |