Heim >Backend-Entwicklung >C++ >Können C#-Enums von anderen Enums erben?

Können C#-Enums von anderen Enums erben?

DDD
DDDOriginal
2025-01-26 07:16:12583Durchsuche

Can C# Enums Inherit from Other Enums?

„Vererbung“ von Aufzählungen

In C# können Aufzählungen nicht von anderen Aufzählungen erben. Dies liegt an der Art und Weise, wie Aufzählungen in der CLI implementiert werden. Alle Aufzählungen müssen von der Basisklasse System.Enum abgeleitet sein.

Eine Aufzählungssyntax, die so aussieht, als wäre sie von einer anderen Aufzählung geerbt, ist in Wirklichkeit eine Änderung in der Art und Weise, wie der zugrunde liegende Wert der Aufzählung dargestellt wird, und keine echte Vererbung. Zum Beispiel:

<code class="language-c#">namespace low
{
    public enum Base
    {
        X, Y, Z
    }
}

namespace mid
{
    public enum Consume : Base
    {
        // 隐式继承 Base 的值
    }
}</code>

Diese Syntax kann irreführend sein, da sie impliziert, dass Consume von Base erbt. Tatsächlich ist Consume jedoch immer noch eine separate Enumeration, die von System.Enum erbt.

Dieses Verhalten ist in Abschnitt 8.5.2 der CLI-Spezifikation klar definiert:

  • Alle Aufzählungen müssen von System.Enum abgeleitet werden.
  • Wie oben erwähnt, sind alle Aufzählungen Werttypen und daher versiegelt (können nicht vererbt werden).

Daher ist es in C# nicht möglich, eine Klasse oder Aufzählung zu erstellen, die tatsächlich den Wert einer anderen Aufzählung erbt.

Das obige ist der detaillierte Inhalt vonKönnen C#-Enums von anderen Enums erben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn