C#3.0新特性――隱含型別區域性變數和匿名型別
Code
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->var I = 1; //int型別
var j = ”reallypride”; //string型別
var k = new[] { 1, 2, 3, 4 }; //int[]型別
var x; //錯誤,必須初始化
var y = null; //錯誤,不可以為空
使用var變數要點:
1. 使用var宣告區域性變數,編譯器會根據後面的初始化表示式自動推斷變數的型別,這個型別是強型別。
2. var變數在宣告時必須初始化,不可以為空,且編譯時可以推斷其型別。初始化後變數只能儲存這種型別。
3. 陣列也可以作為var型別。
匿名型別
匿名型別允許定義行內型別,不須顯示宣告型別。常和var一起使用。如
Code
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->var p1 = new { name = ”reallypride”, age = 23 };
var p2 = new { name = “jingxuan”, age = 23 };
編譯器會自動定義一個包含name和age屬性的類。p1和p2結構相同,是同一個類的例項。我們再定義一個變數:
Code
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->var p3 = new { age = 23, name = “reallypride” };
編譯器會新建一個新的類,也就是p3和p1,p2不是同一個類的例項,因為p3宣告屬性的位置不相同。
{ }是匿名初始化器。
如果要定義陣列,可以這樣定義:
Code
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->var intArray = new[] { 1, 2, 3, 4 };
var strArray = new[] { “a”, “b”, “c” };
var someTypeArray = new[] { new { name = “reallypride”, age = 23 }, new { name = “jingxuan”, age = 23 } };
匿名型別要點:
1. 可以使用new關鍵字呼叫匿名初始化器建立一個匿名型別。
2. 匿名型別直接繼承自System.Object。
3. 匿名型別的屬性是編譯器根據初始化器自動推斷。
或許有人會覺得,有了var這個關鍵字後,其它的型別關鍵字都變成多餘的了。
其實var是簡化了我們的程式設計,讓我們不用再因為定義一個變數而需要寫兩次它的型別。
如定義一個User類的例項,以前的方法我們要這樣定義:
Code
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->User user=new User();
而現在我們可以這樣定義:
Code
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->var user=new User();
我們可以把更多的時間用在軟體功能的實現上而不是敲程式碼上。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-442320/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C#特性-匿名型別與隱式型別區域性變數C#型別變數
- C#隱式型別區域性變數經驗總結C#型別變數
- 修改全域性變數時,可變型別和不可變型別的區別變數型別
- .net framework新特性之隱式型別化的變數Framework型別變數
- 成員變數和區域性變數的區別變數
- C#變數型別(1):引用型別和值型別 (轉)變數型別
- 區域性變數和全域性變數(靜態和非靜態)區別變數
- java 10的區域性變數型別推斷Var的用法 - foojayJava變數型別
- 匿名型別是不是強型別?型別
- Golang的值型別和引用型別的範圍、儲存區域、區別Golang型別
- Java基礎-成員變數和區域性變數的區別Java變數
- 類,物件,成員變數和區域性變數,匿名物件物件變數
- js基本型別和引用型別區別JS型別
- PLC結構化文字(ST)——變數型別和變數屬性變數型別
- 強型別語言變數和資料型別的理解變數資料型別
- PHP變數型別PHP變數型別
- Java 變數型別Java變數型別
- 變數型別-Set變數型別
- c++基本型別和變數C++型別變數
- 成員變數、全域性變數、例項變數、類變數、靜態變數和區域性變數的區別變數
- js基本語法之 值型別(資料型別)(變數型別)JS資料型別變數
- Solidity-變數和資料型別[複合型別_1]Solid變數資料型別
- c#中值型別和引用型別的區別C#型別
- Python語法--可變型別和不可變型別Python型別
- Python中類變數、成員變數、區域性變數的區別Python變數
- 區域性變數和全域性變數變數
- JavaScript - 變數、值、型別JavaScript變數型別
- 資料型別,變數資料型別變數
- 變數型別轉換變數型別
- Python變數型別Python變數型別
- python—資料型別和變數Python資料型別變數
- 第2章 變數和基本型別變數型別
- Java 10新特性:型別推斷Java型別
- 區別值型別資料和引用型別資料型別
- C++ 11 新特性之型別推斷與型別獲取C++型別
- 作用域、連結屬性和儲存型別型別
- 全域性變數和靜態變數的區別變數
- 型別的本質:對變數、型別、指標的理解型別變數指標