我不询问它是如何工作的。我不询问它是否会影响性能。我已经知道了那些答案。
我想知道MS C#团队首先将其添加到语言中的原因。你不会在语言中加入无聊的东西。一定有一个值得注意的问题。这是什么问题?
我见过的“它解决的问题”最接近的例子是使用匿名类型时,如下所示:
var linqResult = from element in SomeCollection s
elect new { element.A, element.B }
这种用法的讽刺之处在于样式和编码标准指南(例如Microsoft提供的)建议编码人员避免在结果类型不明显时使用'var'。换句话说,'var'的(可能)预期目的与编码标准指南相冲突。
如果我正在编写编码标准,并试图防止过度使用'var',我有点倾向于只在回应匿名类型时说“使用'var'。”但这带来了问题的全方位:将“var”添加到语言中的目的是什么?
答案 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查询中的常见场景 表达式。