gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 16:27:31 26 4
gpt4 key购买 nike

我有一个同事反对 C# 中的类型推断。我相信他的大部分论点都围绕着缺乏可读性。我反对的观点是,Visual Studio 的智能感知功能提供了一种查看类型的简单方法,从代码中读取它们并不像我们使用记事本编写代码时那样必要。

但是,我很好奇在 C# 中使用类型推断的优点和缺点。我来自 C++,我知道 C++0x 的“自动”有一个更客观的好处,因为你并不总是知道你得到的类型(尤其是在进行繁重的模板编程时)。一个例子是使用 auto 来存储 Boost.Bind 的值。

在 C# 中,类型推断与其说是一项要求,倒不如说是一项“可有可无”或糖衣功能。我认为当你处理长类型时它会很有用,例如:

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

它会是:

var myVar = obj.GetLazy();

在我看来,这要干净得多。但是,是否有任何客观的论据支持或反对类型推断?使用它是否是一种良好的编程习惯,即使在有争议的情况下它没有提供任何好处(例如,使用“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();

但您的里程可能会有所不同。

关于c# - C# 中的类型推断有哪些优点和缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6019930/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com