'var'的目的是什么?

Bre*_*ias 14 c# linq coding-style var

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

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

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

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

var linqResult = from element in SomeCollection s
                 elect new { element.A, element.B } 
Run Code Online (Sandbox Code Playgroud)

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

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

Mic*_*tum 14

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

Dictionary<MyCustomType, List<MyOtherCustomType>> dict = new Dictionary<MyCustomType, List<MyOtherCustomType>>();
Run Code Online (Sandbox Code Playgroud)


Rob*_*nik 7

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

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

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