使用类型推断我们可以写:
var myList = new List<int>();
但这不是真的有帮助吗?因为仍然需要我们只添加整数,所以不能简单地声明变量'int'而不是'var'?
答案 0 :(得分:4)
var
不会改变编译器的输出 - 它只会缩短代码。
var
提供其他任何内容的唯一时间是匿名类型:
var foo = new { Bar = 123 };
重要的是要了解var
并不意味着动态或变量(从某种意义上说它允许对象的类型变化) - 它只是允许你声明一个变量并让编译器推断出类型,就像你声明它一样。
答案 1 :(得分:4)
IEnumerable<MadeUpEmbarrassinglyLongClassName> stupidVariable = new IEnumerable<MadeUpEmbarrassinglyLongClassName>();
VS
var stupidVariable = new IEnumerable<MadeUpEmbarrassinglyLongClassName>();
哪个更容易阅读?
答案 2 :(得分:1)
它比以下更简洁:
List<int> myList = new List<int>();
我想这可能比使用var更容易阅读,尽管在这个简单的情况下它并不多。
此外,如果该变量被明智地命名,那么它的类型应该相当清楚。
答案 3 :(得分:1)
在为var
分配值之前,var
的类型未知。一旦分配了值,它就会成为分配给它的typeof。当您无法在编译时推断将传递给它的值时,将使用此var
。 var
派上用场的另一种情况是LINQ查询。您可以简单地将结果分配给var
,而不是创建一个特殊的类来处理您的查询返回。一旦开始使用LINQ
答案 4 :(得分:0)
在你的例子中,没有任何优势。事实上,我认为代码可读性受到一些影响(意见)。
这个问题的答案归结为个人偏好。如果使用List<int>()
,编译器将推断var
。您更喜欢看哪个?你的同龄人会更喜欢看哪个?