这种类型推断的优点是什么?

本文关键字:是什么 种类 类型 | 更新日期: 2023-09-27 18:14:06

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

var myList = new List<int>();

但它并没有真正的帮助,是吗?因为它仍然要求我们只添加int,所以声明变量为'int'而不是'var'不是更容易吗?

这种类型推断的优点是什么?

var不会改变编译器的输出-它只会使代码更短。

var提供其他任何东西的唯一时间是关于匿名类型:

var foo = new { Bar = 123 };
重要的是要理解var并不意味着动态变量(在这个意义上,它允许对象的类型变化)-它只是允许你声明一个变量,并让编译器推断类型,就好像你已经声明了它。
IEnumerable<MadeUpEmbarrassinglyLongClassName> stupidVariable = new IEnumerable<MadeUpEmbarrassinglyLongClassName>();

var stupidVariable = new IEnumerable<MadeUpEmbarrassinglyLongClassName>();

哪个更容易阅读?

这比:

List<int> myList = new List<int>();

我想这可能比使用var更容易阅读,尽管在这个微不足道的例子中没有太多内容。

另外,如果变量被合理地命名,那么它的类型应该是相当清楚的。

var在赋值之前属于未知类型。一旦赋值,它就变成被赋值的类型。这个var用于在编译时无法推断将传递给它的值的情况。var派上用场的另一种情况是在LINQ查询中。不需要创建一个特殊的类来处理查询返回,只需将结果赋值给var,它就可以完成其余的工作。一旦你开始使用LINQ

,你肯定会称赞var

在您的示例中,没有任何优势。事实上,我认为代码的可读性受到了一点损害(观点)。

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