在c#中,Struct不能继承一个类,那么为什么它隐式继承System.Object,其中System.Object是一个类。
我知道System.Object是每种类型的基本类型。但是,根据定义,Struct不能继承一个类,那么为什么继承System.Object?
答案 0 :(得分:4)
但是根据定义,Struct不能继承一个类
这是一个错误的前提。自定义结构必须直接从System.ValueType
继承,System.Object
本身继承自Enum
。 那是要求。它不能从任何其他类型继承。因此,用户定义的结构不仅可以从类继承,它实际上必须从[特定]类继承。
(请注意,枚举必须继承自Object
,而不是Enum
,但ValueType
继承自Object
的继承自.wrapper {
width: 740px;
background: #ccc;
}
.leftSidebar {
float: left;
width: 200px;
}
.mainContent {
padding-right: 200px;
padding-left: 200px;
}
。)
答案 1 :(得分:1)
在c#中,Struct不能继承类
是的,他们无法继承Custom class
,尤其是Value type
,因为他们只能对Value types
进行操作,如:
Stack
这样的简单数据结构上进行分配,与参考类型的Heap
不同Value Type
,会进行新的分配,例如基本类型,例如Integer
,Float
,因此Struct s1 = s2
创建一个全新的副本,但对于引用类型,它是Reference的副本,表示指向同一内存的指针要点,那么为什么允许从
System.Object
类派生,有多个重要原因:
System.Object
,因此可以统一的方式表示Value types
相比,Reference types
在操作和功能方面仍然是原始的,并且它们可以代表什么的限制,这就是基本类型是引用类型的原因,因此在需要时,转换可以通过装箱完成,在堆上进行分配并使用引用类型的功能System.Object
对所有类型,值和引用(例如ReferenceEquals, GetHashCode, MemberwiseClone,ToString,GetType
)公开的某些基本公共函数,但肯定会重写