MSDN define System.Enum como una clase abstracta:¿Por qué no puedo derivar de la clase abstracta de System.Enum?
[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class Enum : ValueType, IComparable, IFormattable, IConvertible
Y también MSDN hacer tal declaración acerca de la clase abstracta:
Una clase abstracta no puede ser instanciada . El objetivo de una clase abstracta es proporcionar una definición común de una clase base que pueden compartir múltiples clases derivadas.
Pero simplemente no puedo derivar de System.Enum. Según Jeffery Richter en su libro "CLR via C#", es el compilador de C# que prohíbe esa derivación.
Y comprobé los miembros de System.Enum, la mayoría de ellos son estáticos, lo cual es razonable porque no se puede instanciar y los métodos estáticos no necesitan una instancia de objeto para invocar. Pero también hay algunos métodos de instancia, como GetHashCode() y GetTypeCode().
lo tanto, mi primera pregunta es, si no System.Enum se pueden crear instancias o deriva, ¿cómo podría estos métodos de instancia invocar? ¿No es esto una especie de paradoja?
Sé que podría utilizar el siguiente enfoque para invocar estos métodos de instancia , pero ¿por qué? ¿Hay algún tipo de System.Enum o el tipo derivado objeto instancia creado? ¿Cuando? y por quien?
public enum Days:byte { Saturday, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday };
Days d = Days.Friday;
d.GetTypeCode();
d.GetHashCode();
Days does derive from enum ... ¿cuál es tu confusión? –