繁体   English   中英

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

[英]What is the advantage of this type inference?

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

var myList = new List<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>() 您想看哪一个? 您的同行更喜欢看哪个?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM