2009-10-08 19 views
48

Na przykład Enum System.Net.HttpStatusCode, chciałbym uzyskać kody stanu HTTP zamiast tekstu statusu HTTP. System.Net.HttpStatusCode.Forbidden powinien zwrócić 403 zamiast "Zabronione".Jak uzyskać wartość liczbową z Enum?

Jak mogę wyodrębnić wartość?

+0

Możliwe duplikat [Pierwsze HTTP liczba stan kodu (200, 301, 404, itd.), Z HttpWebRequest i HttpWebResponse] (http : //stackoverflow.com/questions/1330856/getting-http-status-code-number-200-301-404-etc-from-httpwebrequest-and-ht) –

Odpowiedz

72

Dla większości Enuma po prostu rzuca się na typ bazowy, który jest int32.

int value = (int)System.Net.HttpStatusCode.Forbidden; 
+2

co jest przykładem mniejszości, której nie można po prostu rzucić ? – Jimmy

+4

@ Jimmy, dowolne wyliczenie, które ma inny typ bazowy. W takich przypadkach wystarczy rzutować na odpowiedni typ podstawowy (uint32, itd.) ... – JaredPar

+8

Mogę dodać, że można pobrać typ bazowy enum przy użyciu statycznej metody Enum.GetUnderlyingType (typeof (MyEnum)). – Yoopergeek

16

Możesz po prostu rzucić go na liczbę całkowitą!

int code = (int)enumVariable 
7

System.Convert.ToInt32 (response.StatusCode) Zwraca liczbę statusCode

+6

Działa to, gdy masz wyliczenie, ale nie masz typu wyliczenia. Na przykład. 'void DoSomethingWithEnum (Wartość wyliczeniowa) {int X = Convert.ToInt32 (wartość); } 'W tym przypadku normalny rzut na int nie działa. –

+0

Działa to również bardzo dobrze, jeśli wyliczenie jest parametrem generycznym. – Jay

Powiązane problemy