加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#中类型推断有哪些优点和缺点?

发布时间:2020-12-15 17:44:59 所属栏目:百科 来源:网络整理
导读:我有一个同事在C#中反对类型推断.我相信他的大部分论点都包含缺乏可读性.我反对的观点是,Visual Studio的智能感知功能提供了一种查看类型的简单方法,并且从代码中读取它们并不一定是必要的,如果我们使用记事本进行编码. 不过,我很好奇C#中使用类型推理的优缺
我有一个同事在C#中反对类型推断.我相信他的大部分论点都包含缺乏可读性.我反对的观点是,Visual Studio的智能感知功能提供了一种查看类型的简单方法,并且从代码中读取它们并不一定是必要的,如果我们使用记事本进行编码.

不过,我很好奇C#中使用类型推理的优缺点.我来自C,我知道C 0x的’auto’有一个更客观的好处,因为你并不总是知道你所获得的类型(特别是在做大量的模板编程时).一个例子是使用auto来存储Boost.Bind的值.

在C#中,类型推断似乎并不像要“有好”或“糖衣”功能那么多.我认为当你处理长类型时会很有用,例如:

Lazy<List<MyNamespace.ISomeVeryLongInterfaceType>> myVar = obj.GetLazy();

这将是:

var myVar = obj.GetLazy();

这在我看来更清洁然而,对于类型推理,OR有什么客观的论据?即使在有争议的情况下,它没有任何好处(例如使用’var’而不是’int’),使用它是很好的编程实践吗?

有些帮助了解我如何在日常编码中使用“var”将是巨大的.

解决方法

类型推断是为了为C给出的原因发明的,您可以创建不具有类型名称的匿名类型(特别是Lambdas和Linq).

所以在这种情况下是需要的.

在另一种情况下(当类型名称已知时),则归结为风格.当我使用var时,类型真的很明显:

// I like this - less duplication and easier to read
var item = new List<ComplexObjectItem>();

代替:

List<ComplexObjectItem> item = new List<ComplexObjectItem>();

因为它减少重复.

不过,我不喜欢使用它,当类型不是立即显而易见的读者:

// I don't like this - I need to look up what the type is
var item = ResultOfSomeFunctionWhereICantSeeWhatItIs();

但你的里程可能会有所不同.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读