唯一的好处,我可以看到的事:什么是隐式类型的优势的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