唯一的好處,我可以看到的事:什麼是隱式類型的優勢的C#3.0> +
var s = new ClassA();
在
ClassA s = new ClassA();
是,以後如果你決定要ClassB的,你只需要更改聲明的RHS。
我想如果你通過一個集合枚舉,你也可以只是'var',然後找出類型。
是嗎?我的軟弱的頭腦沒有看到其他的巨大好處嗎?
唯一的好處,我可以看到的事:什麼是隱式類型的優勢的C#3.0> +
var s = new ClassA();
在
ClassA s = new ClassA();
是,以後如果你決定要ClassB的,你只需要更改聲明的RHS。
我想如果你通過一個集合枚舉,你也可以只是'var',然後找出類型。
是嗎?我的軟弱的頭腦沒有看到其他的巨大好處嗎?
它主要是合成糖。這真的是你的偏好。除非使用匿名類型,否則使用var是必需的。儘管如此,我更喜歡隱式打字,但它真的與LINQ一起閃耀。
我發現它是多餘的鍵入一個類型兩次。
List<string> Foo = new List<string>();
當我可以很容易地輸入var時,它很明顯是什麼類型。
var Foo = new List<string>();
我開始什麼原來是一個非常有爭議的線程,當我第一次簽署了這裏(我的選擇。「邪惡」來形容一般使用VAR顯然是一個糟糕的選擇。)不用說,我有對於VAR更欣賞比我之前,我開始線程,以及更好地瞭解它如何能夠有效地用於:
一些很好的理由使用VAR:
看一看這個問題。也許他們會幫助你做出決定。
Use of var keyword in C#
https://stackoverflow.com/questions/633474/c-do-you-use-var
首要原因隱式類型是支持匿名類型,如那些由LINQ查詢產生的。在處理複雜類型的泛型時它們也可以是一個很大的好處,比如Dictionary<int,List<string>>
。這不是太複雜,但想象一下......
foreach KeyValuePair<int,List<string>> pair in myDictionary
{
}
被隱式鍵入簡化。
它允許我不必重複自己。考慮這個:
Dictionary<string, List<int>> dict = new Dictionary<string, List<int>>();
我們有一個非常長的typename在同一行上重複兩次,絕對沒有任何好處。而且,如果你需要重構這個,你需要兩次更新類型。而這僅僅是因爲表現:
var dict = new Dictionary<string, List<int>>();
目前仍然沒有關於類型的dict
此疑問,但代碼更短,我會聲稱,它更易於閱讀爲好。
var
對匿名類型非常有用,它們沒有名稱供您使用。
var point = new {X = 10, Y = 10};
這將創建一個具有屬性X和Y的匿名類型。它主要用於支持LINQ。假設你有:
class Person
{
public String Name {get; set;}
public Int32 Age {get; set;}
public String Address {get; set;}
// Many other fields
}
List<Person> people; // Some list of people
現在假設我想選擇只有等到年齡的姓名和多年的人誰是18歲以下的18:
var minors = from person in people where person.Age < 18 select new {Name = person.Name, YearsLeft = 18 - person.Age};
現在minors
包含一些一個List
匿名類型。我們可以迭代這些人:
foreach (var minor in minors)
{
Console.WriteLine("{0} is {1} years away from age 18!", minor.Name, minor.YearsLeft);
}
這些都不是可能的;我們需要選擇整個Person對象,然後在我們的循環中計算YearsLeft,這不是我們想要的。
雖然var關鍵字主要是推出了支持匿名類型,我已經看到了更廣泛的使用它的主要論點是爲了簡潔/更可讀的代碼,再加上你的代碼行更貼:
Dictionary<string, double> data = new Dictionary<string, double>();
versus
var data = new Dictionary<string, double>();
雖然對大多數人來說,我也很喜歡var關鍵字作爲一個盲人程序員,因爲我聽的代碼被只有一個syllabul :-)
其實讀出後沒有一個很好的理由,因此這裏的變量名「 var「在C#中用於處理匿名類型。
像:
var t = new {number = 10, name = "test"};
當我說「我想,如果你是通過收集,你也可以只爲‘無功’,然後找出類型後枚舉。」我知道它已經在運行時輸入了......我的意思是在你的邏輯中。 – Matt 2009-07-27 23:11:44
[在C#中使用var關鍵字]可能的重複(http://stackoverflow.com/questions/41479/use-of-var-keyword-in-c-sharp) – nawfal 2014-07-15 14:04:58