C#'ta enum'dan int değeri alma

Benim Questions (çoğul) adında bir sınıfım var. Bu sınıfta Question (tekil) adında bir enum var ve bu enum aşağıdaki gibi görünüyor.

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

Questionssınıfında, ofooiçin birQuestionsnesnesi döndüren birget(int foo)işlevim var. Enumdan tamsayı değerini almanın kolay bir yolu var mı, böyleceQuestions.Get(Question.Role)` gibi bir şey yapabilir miyim?

Çözüm

Sadece enum dökümünü yapın, örn.

int something = (int) Question.Role;

Bir enum için varsayılan temel tür int olduğundan, yukarıda anlatılanlar doğada gördüğünüz enumların büyük çoğunluğu için işe yarayacaktır.

Ancak, cecilphillip'in de belirttiği gibi, enum'lar farklı temel türlere sahip olabilir. Eğer bir enum bir uint, long veya ulong olarak bildirilmişse, enumun tipine dönüştürülmelidir; örn.

enum StarsInMilkyWay:long {Sun = 1, V645Centauri = 2 .. Wolf424B = 2147483649};

kullanmalısınız

long something = (long)StarsInMilkyWay.Wolf424B;
Yorumlar (12)
Question question = Question.Role;
int value = (int) question;

Değer == 2` ile sonuçlanacaktır.

Yorumlar (9)

Bu düşündüğünüzden daha kolaydır - bir enum zaten bir int'tir. Sadece hatırlatılması gerekir:

int y = (int)Question.Role;
Console.WriteLine(y); // prints 2
Yorumlar (2)