69
A
回答
128
這意味着宣佈本地存在的類型將由編譯器推斷:
// This statement:
var foo = "bar";
// Is equivalent to this statement:
string foo = "bar";
值得注意的是,var
沒有定義的變量爲動態類型。因此,這是不合法的:
var foo = "bar";
foo = 1; // Compiler error, the foo variable holds strings, not ints
var
只有兩個用途:
- 它需要較少的打字聲明變量,變量聲明爲嵌套泛型類型時尤其如此。
- 必須存儲到一個匿名類型的對象的引用時使用,因爲類型名稱不能提前知道:
var foo = new { Bar = "bar" };
不能使用var
作爲任何東西,但當地人的類型。因此,您不能使用關鍵字var
來聲明字段/屬性/參數/返回類型。
12
這意味着數據類型是從上下文派生(暗示)的。
http://msdn.microsoft.com/en-us/library/bb383973.aspx從
在於在方法範圍中聲明可以 具有隱式類型變種的Visual C#3.0,變量 開始。一個 隱式類型局部變量是 強類型,就好像您自己已經聲明瞭 類型,但 編譯器確定類型。 i的 以下兩個聲明是 功能上等同的:
var i = 10; // implicitly typed
int i = 10; //explicitly typed
var
是用於消除鍵盤打字和視覺噪聲,例如有用,
MyReallyReallyLongClassName x = new MyReallyReallyLongClassName();
變得
var x = new MyReallyReallyLongClassName();
但可以被濫用到可讀性被犧牲的地步。
7
「var」表示編譯器將根據使用情況確定變量的顯式類型。例如,
var myVar = new Connection();
會給你一個Connection類型的變量。
3
你有沒有討厭寫這樣的變量初始值設定項?
XmlSerializer xmlSerializer = new XmlSerialzer(typeof(int))
所以,從C#3.0,你可以用
var xmlSerializer = new XmlSerialzer(typeof(int))
一個通知更換:編譯時類型得到解決,所以其性能沒有問題。但編譯器應該能夠在構建步驟中檢測類型,所以像var xmlSerializer;
這樣的代碼根本不會編譯。
4
它根據在初始化中分配給它的內容來聲明一個類型。
一個簡單的例子是,代碼:
var i = 53;
將審查53的類型,基本上是重寫此爲:
int i = 53;
請注意,雖然我們可以有:
long i = 53;
這不會發生在var。儘管它可以用:
var i = 53l; // i is now a long
同理:
var i = null; // not allowed as type can't be inferred.
var j = (string) null; // allowed as the expression (string) null has both type and value.
這可能是一個小的便利與複雜類型。它與匿名類型更爲重要:
var i = from x in SomeSource where x.Name.Length > 3 select new {x.ID, x.Name};
foreach(var j in i)
Console.WriteLine(j.ID.ToString() + ":" + j.Name);
在這裏有定義i
和j
比使用var
,因爲是他們持有的類型沒有名字,沒有其他辦法。
相關問題
- 1. @var在php中的含義是什麼
- 2. 「System.IO」在C#中的含義是什麼?
- 3. PLAT_BINARYFORMATTER在C#中的含義是什麼?
- 4. var,_ =在Python中的含義是什麼?字符串連接?
- 5. C中「wild pointer」的含義是什麼?
- 6. C#中「@」的含義是什麼
- 7. C++中[=](...){...}的含義是什麼?
- 8. :: C++中的含義是什麼?
- 9. C#中'this'的含義是什麼?
- 10. C#中「=>」的含義是什麼?
- 11. C++宏中「##」的含義是什麼?
- 12. C++中NULL!= value的含義是什麼?
- 13. C中'=='的含義是什麼?
- 14. =的含義是什麼?在目標c
- 15. /var/log/messages中錯誤編號的含義是什麼?
- 16. 線的含義是什麼:var DYN_WEB = DYN_WEB || {};在js?
- 17. 這是' - >'在c/objective-c中的含義是什麼?
- 18. 什麼(char)0在C++中的含義?
- 19. 這個類定義在C#中的含義是什麼?
- 20. {$ C PRELOAD}指令的含義是什麼?
- 21. C(字符串)在C++中的含義是什麼?
- 22. 在$ {var?}中,bash變量參數展開中問號的含義是什麼?
- 23. 什麼VAR = VAR &&「*」的意思是在Javascript
- 24. BackoffMultiplier在DefaultRetryPolicy中的含義是什麼?
- 25. arg在WordPress中的含義是什麼
- 26. {}在perl中的含義是什麼?
- 27. _._在包裝中的含義是什麼?
- 28. 'AS'在SQL中的含義是什麼?
- 29. 「**」在ANT中的含義是什麼?
- 30. $ parent在AngularJS中的含義是什麼?
這是一個很好的例子,說明Stack Exchange上需要的答案。有時候人們會忽略重要的信息和/或不夠簡短。 – Panzercrisis 2016-04-12 14:03:37