Heim > Backend-Entwicklung > C++ > Wie kann ich Strings in C# Enums effizient darstellen?

Wie kann ich Strings in C# Enums effizient darstellen?

Linda Hamilton
Freigeben: 2025-01-29 07:45:12
Original
266 Leute haben es durchsucht

How Can I Efficiently Represent Strings in C# Enums?

C# Aufzählter String zeigt

an

In C#verwendet die Aufzählung normalerweise einen Wert, um verschiedene Optionen darzustellen. In einigen Fällen sind Sie jedoch eher geneigt, mit diesen Optionen eine aussagekräftige Zeichenfolge zu verbinden.

Eine Methode besteht darin, benutzerdefinierte Attribute und String -Suchmethoden zu verwenden:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

[StringValue("FORMS")]

public enum AuthenticationMethod

{

    FORMS = 1,

    WINDOWSAUTHENTICATION = 2,

    SINGLESIGNON = 3

}

 

public static class StringEnum

{

    public static string GetStringValue(Enum value)

    {

        // 检索 StringValue 属性,如果找到则返回关联的字符串;否则返回 null。

    }

}

Nach dem Login kopieren
Diese Methode erfordert manuelle Anwendungsattribute und wird als relativ lang angesehen.

Eine andere Methode besteht darin, den Typ des sicheren Hubmodus zu berücksichtigen:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

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;

    }

}

Nach dem Login kopieren
Dieses Modell beinhaltet die Erstellung eines Siegels, das dem Aufzug ähnelt, wobei das statische Lesebereich jede Option darstellt. Jedes Feld hat eine String -Repräsentationsform und einen Wert.

Für die Konvertierung des expliziten Typs können Sie den vom Mapping Dictionary und der Benutzerdefinition definierten Typentypkonvertierungsoperator hinzufügen:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

private static readonly Dictionary<string, AuthenticationMethod> instance = new Dictionary<string, AuthenticationMethod>();

 

public AuthenticationMethod(int value, string name)

{

    instance[name] = this;

}

 

public static explicit operator AuthenticationMethod(string str)

{

    if (instance.TryGetValue(str, out AuthenticationMethod result))

        return result;

    else

        throw new InvalidCastException();

}

Nach dem Login kopieren
Diese Methode kombiniert die Vorteile der beiden Methoden: die Art der sicheren und bequemen String -Darstellung und die Typumwandlung der Benutzerdefinition.

Das obige ist der detaillierte Inhalt vonWie kann ich Strings in C# Enums effizient darstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage