您的位置: 旅游网 > 时尚

C的未来元组及匿名结构体

发布时间:2019-07-12 20:52:17

C#的未来:元组及匿名结构体

IT168 技术随着C# 6接近完成,C# 7的开发计划也开始提到了日程上。虽然目前为止,还没有任何可确定的内容,但C# 团队已经开始按照“兴趣及预计可行性”将各种提议进行分类。在这个系列文章中,我们将对某些提议进行分析,首先从对元组的语言支持开始。

使用元组的目标是以一种轻量级的方式从一个函数中返回多个值。对元组的良好支持能够消除对out参数的使用,这种参数通常被认为是一种笨重的方案。此外,out参数无法兼容 async/await,因此在许多场景中out参数将变得毫无作用。

从.NET Framework 4开始,就加入了Tuple(元组)这个类。但是多数开发者都认为这个类只在非常有限的场景中才能够体现出实用性。首先,元组是一个类,这意味着在使用时必须为它分配内存,而这一点会增加内存的压力,并使垃圾回收器的执行周期变得更加频繁。如果要让元组与out参数在性能方面进行竞争,需要将其实现为一个结构体。

第二个问题与 API 的设计有关,如果你看到了某个返回类型Tuple,那么从类型本身你无法了解任何信息。如此一来,在使用这个函数的过程中你至少需要检查文档两次,一次是在编写函数时,另一次则是在代码审查时。如果返回类型能够表现为类似于Tuple这样,那么它的实用性将会大大增加。

在这条提议中,以上每一行代码都将定义一个新的匿名值类型,其中包括sum和count属性。需要注意的是,和匿名类不同,匿名结构体要求你明确地列举出属性的名称与类型。

使用结构体的一个好处在于它们会自动定义Equals和GetHashCode方法。不过也有人会表示默认的实现方式不够高效,编译器应当替换它的实现。

开一个微商城多少钱一个
微小店官网
个人微信开店怎么开
猜你会喜欢的
猜你会喜欢的