这种类型推断的优点是什么?
本文关键字:是什么 种类 类型 | 更新日期: 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>()
。你想看哪个?你的同伴更喜欢看哪个?