‘var’的目的是什么?

可能重复:
var关键字有什么意义?

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

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

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

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

具有讽刺意味的是,样式和编码标准指南(如Microsoft提供)建议编码人员避免在结果类型不明显时使用’var’。 换句话说,’var’的(可能)预期目的与编码标准指南相冲突。

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

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

 Dictionary> dict = new Dictionary>(); 

没错 ! 匿名类型。 如果没有var并且仍然具有智能感知,你将如何保持对已创建的匿名类型的引用?

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

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

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

来自MSDN :

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