Heim >Backend-Entwicklung >C++ >Wie kann man Enum -Zeichenfolgen mit einem Standardwert in C#sicher analysieren?

Wie kann man Enum -Zeichenfolgen mit einem Standardwert in C#sicher analysieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-02-01 06:01:09916Durchsuche

How to Safely Parse Enum Strings with a Default Value in C#?

Bildungsmethode und Aufzählungssteuerungsbeschränkungen

Problembeschreibung:

Ziel ist es, eine generische Funktion zu erstellen, die

-Funktion zu erweitern und den Standardwert zu ermöglichen, wenn Sie den Übereinstimmungswert der Übereinstimmung nicht finden können. Diese Funktion sollte nicht durch den Fall unterschieden werden.

Enum.Parse Bei dem Versuch, die folgende Code -Definitionsfunktion zu verwenden:

Ich werde auf einen Fehler stoßen und darauf hinweisen, dass die Einschränkung keine spezielle Klasse sein kann (System.Enum).
<code class="language-csharp">public static T GetEnumFromString<T>(string value, T defaultValue) where T : Enum
{
    // 实现...
}</code>

Lösung:

Um diesen Fehler zu lösen und die Verwendung generischer Aufzählungen zu ermöglichen, kann die Einschränkung geändert werden:

Die Einschränkung nach diesem Update stellt sicher, dass T eine Struktur ist und auch die ikonvertierbare Schnittstelle unterstützt, die durch Aufzählung implementiert wird.

<code class="language-csharp">public static T GetEnumFromString<T>(string value, T defaultValue) where T : struct, IConvertible</code>
Verbesserte Implementierung:

Der folgende geänderte Code zeigt die Verbesserung der Verbesserung:

Diese Methode akzeptiert jetzt generische Aufzählungsarten und ist völlig sicher, um sicherzustellen, dass nur effektive Aufzählungswerte zurückgegeben werden. Die Verwendung von

garantiert die Richtigkeit der Kreuzkultur.

Das obige ist der detaillierte Inhalt vonWie kann man Enum -Zeichenfolgen mit einem Standardwert in C#sicher analysieren?. 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