Heim >Backend-Entwicklung >C++ >Wie können wir die String-Darstellung von Aufzählungen mithilfe von Typ-sicheren Aufzügen und expliziten Typumwandlungen verbessern?
Eine Alternative der Aufzählungszeichenfolge
Das vorherige Schema verwendet benutzerdefinierte Attribute, um die Darstellung der Aufzählungszeichenfolge abzurufen. Obwohl die Funktion gültig ist, kann sie langwierig aussehen. Im Folgenden ist eine alternative Methode zur Verwendung des Typs Secure Enumeration -Modus:
Dieses Modell definiert die explizite Instanz der Aufzählung, die Zeichenfolge und Wertdarstellung enthält.
<code class="language-csharp">public sealed class AuthenticationMethod { private readonly string name; private readonly int value; public static readonly AuthenticationMethod FORMS = new AuthenticationMethod(1, "FORMS"); public static readonly AuthenticationMethod WINDOWSAUTHENTICATION = new AuthenticationMethod(2, "WINDOWS"); public static readonly AuthenticationMethod SINGLESIGNON = new AuthenticationMethod(3, "SSN"); private AuthenticationMethod(int value, string name) { this.name = name; this.value = value; } public override string ToString() { return name; } }</code>Methode geben das Formular zur String -Darstellung zurück.
ToString()
Unterschiedliche Konvertierung
Um den expliziten Typumwandlungen zu aktivieren, können Sie ein statisches Mitglied zur Zuordnung der Klasse hinzufügen:
füllen Sie das Wörterbuch im Konstruktor der Klasse aus:
<code class="language-csharp">private static readonly Dictionary<string, AuthenticationMethod> instance = new Dictionary<string, AuthenticationMethod>();</code>
Fügen Sie schließlich einen von Benutzer definierten Typ Conversion Operator hinzu:
<code class="language-csharp">instance[name] = this;</code>
Auf diese Weise können Sie die Zeichenfolge explizit in die
-Stanz konvertieren, um den Typ -Konvertierungsprozess direkter zu gestalten.<code class="language-csharp">public static explicit operator AuthenticationMethod(string str) { AuthenticationMethod result; if (instance.TryGetValue(str, out result)) return result; else throw new InvalidCastException(); }</code>
Das obige ist der detaillierte Inhalt vonWie können wir die String-Darstellung von Aufzählungen mithilfe von Typ-sicheren Aufzügen und expliziten Typumwandlungen verbessern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!