1.值类型(valueType):比如int, char,float,double等,在C#中,我们可以通过struct 和enum来自定义值类型- public struct Size
- {
- public int x;
- public int y;
- public void Show()
- {
- console.write("{0},{1}",x,y);
- }
- }
复制代码 当然,类似的我们也可以定义一个类- public class CSize
- {
- public int x;
- public int y;
- public void Show()
- {
- console.write("{0},{1}",x,y);
- }
- }
复制代码 很显然,Size是valueType的, 而CSize是reference type的。
2.所有的值类型都是System.ValueType的后代,枚举类型也不例外,枚举类型直接继承自System.Enum,而System.Enum却又直接继承自System.ValueType的,所以,枚举类型也是System.ValueType的后代。
3. 所有枚举类型(enum type)都是值类型。
4. System.Enum和System.ValueType本身是引用类型。
5. 枚举类型(enum type)都是隐式的直接继承自System.Enum,并且这种继承关系只能由编译器自动展开。但System.Enum本身不是枚举类型(enum type)。
6. System.Enum是一个特例,它直接继承自System.ValueType,但本身却是一个引用类型。
总结:正确的说法应该是“值类型都是System.ValueType的后代”,但System.ValueType的后代不全是值类型,System.Enum就是唯一的特例!在System.ValueType的所有后代中,除了System.Enum之外其它都是值类型。
|