我有一个同事反对在C#中使用类型推断。我认为他的大部分论点都围绕可读性不足。我的反驳是,Visual Studio的Intellisense功能提供了一种简单的查看类型的方式,从代码中阅读它们并不像我们在记事本中编码时那样必要。
然而,我对在C#中使用类型推断的优缺点很感兴趣。我来自C++,知道C++0x的“auto”具有更加客观的好处,因为你并不总是知道你得到的类型(尤其是在进行重型模板编程时)。例如,使用auto存储Boost.Bind的值。
在C#中,类型推断似乎并不像要求那样重要,更多的是一种“好用”或者说是简化语法的特性。我认为,在处理长类型时会很有用,例如:
然而,我对在C#中使用类型推断的优缺点很感兴趣。我来自C++,知道C++0x的“auto”具有更加客观的好处,因为你并不总是知道你得到的类型(尤其是在进行重型模板编程时)。例如,使用auto存储Boost.Bind的值。
在C#中,类型推断似乎并不像要求那样重要,更多的是一种“好用”或者说是简化语法的特性。我认为,在处理长类型时会很有用,例如:
Lazy<List<MyNamespace.ISomeVeryLongInterfaceType>> myVar = obj.GetLazy();
它将是:
var myVar = obj.GetLazy();
在我看来,这种写法更清晰。然而,是否存在关于类型推断的正面或负面的客观论据?即使在可争议的情况下(例如使用'var'代替'int'),使用它是良好的编程实践吗?
希望能有一些帮助我理解如何在日常编码中使用'var'的指导。
var
... - NickAldwinmyVar
和obj.GetLazy()
这样毫无意义的名称。当你给变量起这么好的名字时,似乎一切都是个坏主意。 - Dennis Zickefoose