MSDN System.Enum定义为一个抽象类:为什么我无法从System.Enum抽象类派生?
[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class Enum : ValueType, IComparable, IFormattable, IConvertible
而且还MSDN做出抽象类这样的表述:
一个抽象类不能被实例化 。抽象类的目的是为多个派生类可以共享的基类定义一个通用的定义。
但我根本无法从System.Enum派生。根据Jeffery Richter在他的书“CLR via C#”中的说法,C#编译器禁止这种派生。
我检查了System.Enum的成员,其中大多数是静态的,这是合理的,因为它不能实例化,静态方法不需要调用对象实例。但也有一些实例方法,例如GetHashCode()和GetTypeCode()。
所以,我的第一个问题是,如果System.Enum不能 被实例化或派生,怎么可能 这些实例方法调用? 这不是一种悖论吗?
我知道我可以用下面的 的方法来调用这些实例的 方法,但是为什么?是否有某种 的System.Enum或派生类型对象 实例是否创建?什么时候?并由谁?
public enum Days:byte { Saturday, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday };
Days d = Days.Friday;
d.GetTypeCode();
d.GetHashCode();
天确实来自枚举...你有什么困惑? – 2010-02-24 14:08:07