为什么Struct不能从另一个struct派生?

pen*_*ake 8 .net c# clr value-type

我对.Net和CLR的观点回答更感兴趣:

为什么struct不能是另一个struct的基类,反之亦然?

SLa*_*aks 13

结构占据堆栈中的固定大小的插槽(或者它们居住的任何地方).

因此,您将无法对结构进行任何类型的多态,因为派生的结构将是不同的大小.

有可能从其他结构继承成员,但由于你不能做任何形式的多重现象,所以不值得混淆.

  • 但这并不排除模板语法,当你从结构继承时,你得到了它的所有方法,属性和字段的副本.它不会与赋值兼容,但它将具有相同的布局以及您在"后代"中添加的任何其他内容.我想这个事实已经足够了,但这会令人困惑. (4认同)
  • 两个词:对象切片.http://en.wikipedia.org/wiki/Object_slicing (4认同)
  • @ LasseV.Karlsen:没错.如果得到支持,这个问题就是"为什么我不能写`Base b = new Derived()`?" (2认同)