这种推理的优点是什么?

时间:2011-11-11 13:54:15

标签: c#

使用类型推断我们可以写:

var myList = new List<int>();

但这不是真的有帮助吗?因为仍然需要我们只添加整数,所以不能简单地声明变量'int'而不是'var'?

5 个答案:

答案 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。当您无法在编译时推断将传递给它的值时,将使用此varvar派上用场的另一种情况是LINQ查询。您可以简单地将结果分配给var,而不是创建一个特殊的类来处理您的查询返回。一旦开始使用LINQ

,你肯定会称赞{{1}}

答案 4 :(得分:0)

在你的例子中,没有任何优势。事实上,我认为代码可读性受到一些影响(意见)。

这个问题的答案归结为个人偏好。如果使用List<int>(),编译器将推断var。您更喜欢看哪个?你的同龄人会更喜欢看哪个?