是不是说结构只是一个继承自System.ValueType的类?
关键字"struct"只是用于编写类的语法糖:System.ValueType在名称后面吗?
如果它只是一个类,那么说并非所有类都是引用类型是正确的,因为结构在技术上是类吗?
Jam*_*are 10
不完全"只是语法糖".来自MSDN:
尽管ValueType是值类型的隐式基类,但您无法创建直接从ValueType继承的类.相反,单个编译器提供语言关键字或构造(例如C#中的struct和Visual Basic中的Structure ... End Structure)以支持值类型的创建.
所以可能你说,一个struct仅仅是一个class从继承System.ValueType 语义?这是值得商榷的.所有struct都是派生自System.ValueType,但你不能明确地创建一个class派生自System.ValueType.
另外,当然,只是从中衍生而来System.ValueType,与你可能知道的struct有许多不同之处class.但如果没有,我有一篇关于这里的一些主要差异的博客文章,包括但不限于:
struct不能接受定义中其字段的初始化值(它们始终为其声明的字段类型指定值).struct可以有事件,但由于它们是值类型,因此必须注意您没有订阅副本!struct.struct参数构造函数,struct提供一个不能被覆盖的构造函数.struct构造函数不会隐藏无参数构造函数.this在a中使用的关键字struct是值变量,而不是引用.new用来创建a的实例struct(但是如果这样做,您必须在使用之前为所有字段提供值.MSDN对何时使用structvs 也有一些很好的建议class.因为它们是值类型,所以你应该将它们视为这样,并将它们限制为较小的东西(16字节或更少),最好是单个值的不可变表示(如DateTime,TimeStamp等等).
结构在几个重要方面与类不同:
另请参阅:在类和结构之间进行选择