Bazı testler için aşağıdaki kodu yazdım ve çıktı beklentimden çıktı.Neden System.Enum bir değer türü değil?
public enum Days { Saturday, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday };
Console.WriteLine(typeof(System.Enum).IsValueType.ToString()); // False
Console.WriteLine(typeof(Days).IsValueType.ToString()); // True
Yani Reflektör Type.IsValueType özelliğinin uygulanmasını denetlemek. Hangisi:
[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class Enum : ValueType, IComparable,
IFormattable, IConvertible
Sonra IsValueType bu şekilde implentmented neden:
MSDN
public bool get_IsValueType()
{
return this.IsValueTypeImpl();
}
protected virtual bool IsValueTypeImpl()
{
Type type = this;
return (((type != valueType) && (type != enumType)) && this.IsSubclassOf(valueType));
}
, System.Enum olarak tanımlanır? Neden enumType için bir tespit var?
Teşekkürler Jon. Bu beni şaşırtıyor. Benim iki sorum var. 1) System.ValueType bir değer türü değilse, bir türün değer türü olup olmadığını nasıl öğrenebilirim? 2) Yukarıdaki örnekte, bir referans türüne (Enum) örtülü olarak bir değer tipi (Foo.x) atayabilirsiniz, boks ve kutuklama nedir? – KFL