Istnieje wiele pytań na temat konwersji łańcuchów do wartości wyliczeniowej. Ogólnie rzecz biorąc, odpowiedź wyglądał odpowiedzi na this question:Dlaczego Enum.Parse() zwraca obiekt?
StatusEnum MyStatus = (StatusEnum) Enum.Parse(typeof(StatusEnum), "Active", true);
Mimo, że jest to całkowicie uzasadnione odpowiedź, można napisać metodę, aby uprościć połączenie, to nie jest odpowiedź na pytanie dlaczego Enum. Funkcja Parse() zwraca wartość object
zamiast odpowiedniej wartości wyliczenia. Dlaczego muszę go przesłać na numer StatusEnum
?
Edit:
Zasadniczo chodzi o to, dlaczego jest funkcją jak to nie część klasy Enum?
public static T Parse<T>(string value) where T: struct
{
return (T)Enum.Parse(typeof (T), value);
}
Ta funkcja działa doskonale, działa dokładnie tak, jak można się spodziewać. StatusEnum e = Enum.Parse<StatusEnum>("Active");
.
@ SpYk3HH - Enums nie * ma * wartości. Są * wartościami *. Są to wartości, które zwykle mają przeciążenie dla '.ToString()', ale nadal są wartościami. – Bobson
.NET 4.0+ ma ['Enum.TryParse'] (http://msdn.microsoft.com/en-us/library/dd783499 (v = vs.100)) –
@ SpYk3HH wartością typu wyliczeniowego jest pewna liczba całkowita, która może być związana z jednym z pól typu wyliczeniowego. Wielkość liczby całkowitej może być różna. Parse pobiera ciąg znaków i zwraca instancję pudełkową typu wyliczeniowego. To może być rozpakowane lub nie. Twoje ostatnie zdanie również nie ma sensu. String i Boolean mają również właściwości i metody, na których można pracować. – phoog