我能看到的唯一优势:
var s = new ClassA();
在
ClassA s = new ClassA();
如果您之后决定要ClassB,那么您只需要更改声明的RHS。
我想如果你通过一个集合进行枚举,你也可以只是'var',然后再计算出类型。
是吗?还有一些其他巨大的好处,我的虚弱的头脑没有看到?答案 0 :(得分:8)
它主要是语法糖。这是你的偏好。除非使用匿名类型,否则需要使用var。尽管如此,我更喜欢隐式打字,它真的很流行于LINQ。
我发现输入两次类型是多余的。
List<string> Foo = new List<string>();
当我明显知道类型是什么时,我可以很容易地输入var。
var Foo = new List<string>();
答案 1 :(得分:5)
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,这不是我们想要的。
答案 2 :(得分:4)
当我第一次在这里签名时,我开始发现了一个极具争议性的话题(我选择“邪恶”来描述var的一般用法显然是一个糟糕的选择。)不用说,我对var有更多的了解比我之前开始那个线程,以及更好地理解如何有用它:
使用var的一些很好的理由:
答案 3 :(得分:2)
看看这个问题。也许他们会帮你决定。
Use of var keyword in C#
https://stackoverflow.com/questions/633474/c-do-you-use-var
答案 4 :(得分:2)
它让我不再重复自己的不必要了。考虑一下:
Dictionary<string, List<int>> dict = new Dictionary<string, List<int>>();
我们有一个非常长的类型名称在同一行重复两次,绝对没有任何好处。此外,如果您需要重构此内容,则需要两次更新类型。虽然这同样具有表现力:
var dict = new Dictionary<string, List<int>>();
此处dict
的类型仍然存在疑问,但代码较短,我认为它也更容易阅读。
答案 5 :(得分:1)
实际上C#中的“var”用于处理匿名类型。
喜欢:
var t = new {number = 10, name = "test"};
答案 6 :(得分:0)
隐式类型的首要原因是支持匿名类型,例如LINQ查询生成的类型。在处理复杂类型的泛型时,它们也是一个很大的好处......类似于Dictionary<int,List<string>>
。这不是太复杂,但想象一下......
foreach KeyValuePair<int,List<string>> pair in myDictionary
{
}
隐式输入简化了。
答案 7 :(得分:0)
尽管var关键字主要是为了支持匿名类型而引入的,但我更广泛地使用它的主要论点是为了简洁/更易读的代码,再加上你的代码行更多:
Dictionary<string, double> data = new Dictionary<string, double>();
versus
var data = new Dictionary<string, double>();
虽然对大多数人来说不是一个好理由,但我也喜欢var关键字作为盲人程序员,因为我听了正在读出的代码,因此这里只是一个音节之后的变量名: - )