2392 Stimmen

Int-Wert von enum in C# abrufen

Ich habe eine Klasse namens Questions (Plural). In dieser Klasse gibt es ein Enum namens Question (Singular), der wie folgt aussieht.

public enum Question
{
    Role = 2,
    ProjectFunding = 3,
    TotalEmployee = 4,
    NumberOfServers = 5,
    TopBusinessConcern = 6
}

In der Questions Klasse habe ich eine get(int foo) Funktion, die eine Questions Objekt für dieses foo . Gibt es eine einfache Möglichkeit, den Integer-Wert aus dem Enum zu erhalten, so dass ich etwas wie dieses tun kann Questions.Get(Question.Role) ?

48 Stimmen

Für den umgekehrten Fall: guss-im-scharfen-um .

16 Stimmen

Ich weiß, dass ich zu spät dran bin, aber anstatt Ihre Methode wie folgt zu definieren get(int foo) können Sie sie definieren als get(Question foo) dann führen Sie das Casting innerhalb der Methode durch, dann können Sie Ihre Methode als Questions.Get(Question.Role)

1 Stimmen

Versuchen Sie dies: int int_Choose = (int) Question.Role;

13voto

JaimeArmenta Punkte 139
int number = Question.Role.GetHashCode();

number sollte den Wert 2 .

12voto

Bronek Punkte 9976

Sie können dies tun, indem Sie eine Erweiterungsmethode zu Ihrem definierten Aufzählungstyp:

public static class MyExtensions
{
    public static int getNumberValue(this Question questionThis)
    {
        return (int)questionThis;
    }
}

Dies vereinfacht die Ermittlung des int-Wertes des aktuellen Enum-Wertes:

Question question = Question.Role;
int value = question.getNumberValue();

o

int value = Question.Role.getNumberValue();

11voto

Gauravsa Punkte 5797
public enum Suit : int
{
    Spades = 0,
    Hearts = 1,
    Clubs = 2,
    Diamonds = 3
}

Console.WriteLine((int)(Suit)Enum.Parse(typeof(Suit), "Clubs"));

// From int
Console.WriteLine((Suit)1);

// From a number you can also
Console.WriteLine((Suit)Enum.ToObject(typeof(Suit), 1));

if (typeof(Suit).IsEnumDefined("Spades"))
{
    var res = (int)(Suit)Enum.Parse(typeof(Suit), "Spades");
    Console.Out.WriteLine("{0}", res);
}

6voto

Jeffrey Ferreiras Punkte 261

Da Enums mit mehreren primitiven Typen deklariert werden können, kann eine generische Erweiterungsmethode zum Casting beliebiger Enum-Typen nützlich sein.

enum Box
{
    HEIGHT,
    WIDTH,
    DEPTH
}

public static void UseEnum()
{
    int height = Box.HEIGHT.GetEnumValue<int>();
    int width = Box.WIDTH.GetEnumValue<int>();
    int depth = Box.DEPTH.GetEnumValue<int>();
}

public static T GetEnumValue<T>(this object e) => (T)e;

5voto

Vivek Punkte 117

Das Beispiel, das ich vorschlagen möchte, um einen 'int'-Wert aus einer Aufzählung zu erhalten, lautet

public enum Sample
{
    Book = 1, 
    Pen = 2, 
    Pencil = 3
}

int answer = (int)Sample.Book;

Jetzt lautet die Antwort 1.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X