我有一个在C#中反对类型推断的同事。我相信他的大部分论点都缺乏可读性。我反对的观点是,Visual Studio的智能感知功能提供了一种查看类型的简单方法,并且从代码中读取它们不像编写出记事本时那样必要。C#中的类型推断有哪些优点和缺点?
但是,我很好奇在C#中使用类型推断的优缺点。我来自C++,并且我知道C++ 0x的'auto'有更客观的好处,因为你并不总是知道你得到的类型(特别是在进行繁重的模板编程时)。一个例子是使用auto来存储Boost.Bind的值。
在C#中,类型推断似乎没有太多的要求,因为它是一个“很好有”或糖衣功能。我认为这将是当你正在处理long类型有用的,例如:
Lazy<List<MyNamespace.ISomeVeryLongInterfaceType>> myVar = obj.GetLazy();
这将是:
var myVar = obj.GetLazy();
这是在我看来,更清洁。但是,有没有客观的论据来反驳类型推断?使用它是否是一种很好的编程习惯,即使在可争论的情况下它不提供任何好处(例如,使用'var'而不是'int')?
一些帮助理解我应该如何在日常编码中使用'var'会很好。
ReSharper似乎告诉我使用'var'很多... – NickAldwin 2011-05-16 15:55:56
请参阅http://blogs.msdn.com/b/ericlippert/archive/2011/04/20/uses-and-misuses-of- implicit-typing.aspx – 2011-05-16 15:57:44
好吧,如果你问我,明确指定类型应该是一个非常罕见的例外,即使这样你也应该使用你可能使用的最常用的类型。但是再次,我主要使用Python编程(duck typing),并且非常喜欢Haskell(类型推断)和结构化类型。 – delnan 2011-05-16 16:03:35