我喜欢使用结构.
因此,在阅读本文后,我是否应该反对使用它们?
我什么时候应该使用结构而不是类?
何时在C#中使用struct?
Jon Skeet.. 11
我几乎从不定义自定义结构.IMO周围没有那么多自然价值类型.
特别是,在定义一个可变结构之前,我会非常仔细地考虑,特别是如果它通过接口实现变异.可变结构的行为方式是人们根本没想到的,导致代码难以理解.
我认为值得阅读" 开发类库的设计指南"中的" 在类和结构之间进行选择".
特别是:
除非类型具有以下所有特征,否则不要定义结构:
它逻辑上表示单个值,类似于基本类型(整数,双精度等).
它的实例大小小于16个字节.
这是不可改变的.
它不必经常装箱.
你真的经常开发具有所有这些特征的类型吗?
我几乎从不定义自定义结构.IMO周围没有那么多自然价值类型.
特别是,在定义一个可变结构之前,我会非常仔细地考虑,特别是如果它通过接口实现变异.可变结构的行为方式是人们根本没想到的,导致代码难以理解.
我认为值得阅读" 开发类库的设计指南"中的" 在类和结构之间进行选择".
特别是:
除非类型具有以下所有特征,否则不要定义结构:
它逻辑上表示单个值,类似于基本类型(整数,双精度等).
它的实例大小小于16个字节.
这是不可改变的.
它不必经常装箱.
你真的经常开发具有所有这些特征的类型吗?
您应该对结构进行以下考虑:
结构应该是不可变的(可变结构不直观且不可预测)
结构总是有一个无法更改的默认(公共无参数)构造函数
struct size不应超过16个字节
在Equals
和GetHashCode
方法应该重写以提高性能
IEquatable
建议实现该接口
重新定义和==
和!=
还建议运营商