Co sprawia, że ​​ValueType klasy Special?

Kiedy próbuję zdefiniować klasę, która dziedziczy zSystem.ValueType lubSystem.Enum klasa, otrzymuję błąd:

Cannot derive from special class System.ValueType

Rozumiem ten błąd, ale to, czego nie mogłem zrozumieć, to właśnie toValueType klasaspecjalny? Mam na myśli, że nie ma słowa kluczowego (jaksealed) lub atrybut, aby określić, że tej klasy nie można odziedziczyć.ValueType ma dwa atrybutySerializable iComVisible ale żaden z nich nie ma znaczenia w tej sprawiedokumentacja mówi:

Chociaż ValueType jest niejawną klasą bazową dla typów wartości,nie można utworzyć klasy, która dziedziczy bezpośrednio z ValueType. Zamiast tego poszczególne kompilatory udostępniają słowo kluczowe języka lub konstrukt (taki jak struct w C # i Structure… End Structure w Visual Basic), aby wspierać tworzenie typów wartości.

Ale to nie odpowiada na moje pytanie. Więc moje pytanie brzmi, w jaki sposób kompilator jest informowany w tym przypadku? Czy kompilator bezpośrednio sprawdza, czy klasa jestValueType lubEnum kiedy próbuję utworzyć klasę dziedziczącą z klasy?

Edytuj: Także wszystkie strukturyimplicitly odziedziczyć zValueType, aleEnum klasaJawnie odziedziczyć zValueType, więc jak to działa? Jak kompilator rozpoznaje tę sytuację, wszystko to jest kodowane przez kompilator?

questionAnswers(3)

yourAnswerToTheQuestion