'var'的目的是什么?

时间:2011-02-16 18:31:51

标签: c# linq coding-style var

  

可能重复:
  What's the point of the var keyword?

询问它是如何工作的。我询问它是否会影响性能。我已经知道了那些答案。

我想知道MS C#团队首先将其添加到语言中的原因。你不会在语言中加入无聊的东西。一定有一个值得注意的问题。这是什么问题?

我见过的“它解决的问题”最接近的例子是使用匿名类型时,如下所示:

var linqResult = from element in SomeCollection s
                 elect new { element.A, element.B } 

这种用法的讽刺之处在于样式和编码标准指南(例如Microsoft提供的)建议编码人员避免在结果类型不明显时使用'var'。换句话说,'var'的(可能)预期目的与编码标准指南相冲突。

如果我正在编写编码标准,并试图防止过度使用'var',我有点倾向于只在回应匿名类型时说“使用'var'。”但这带来了问题的全方位:将“var”添加到语言中的目的是什么?

4 个答案:

答案 0 :(得分:14)

匿名类型是最重要的,但也减少了方法中的重复:

Dictionary<MyCustomType, List<MyOtherCustomType>> dict = new Dictionary<MyCustomType, List<MyOtherCustomType>>();

答案 1 :(得分:7)

<强>完全!匿名类型。如果没有var并且仍然具有智能感知,那么在世界上如何保留对已创建的匿名类型的引用?

换句话说:当没有var时,我们现在拥有编译时支持的可用意义上就没有任何匿名类型。匿名类型会有太多的运行时错误。

添加的(过度使用时的复杂性)是你可以使用var甚至非匿名变量。当然有效,但这是一个坏习惯。

答案 2 :(得分:1)

据我所知,var关键字的制作使得LINQ更容易使用匿名类型

答案 3 :(得分:0)

来自MSDN

  

在许多情况下,使用var是   可选的,只是一个句法   方便。但是,当一个变量   使用匿名类型初始化   你必须将变量声明为var   如果您需要访问属性   之后的对象。这个   是LINQ查询中的常见场景   表达式。