2009-10-08 1 views
48

Ad esempio, Enum System.Net.HttpStatusCode, vorrei ottenere i codici di stato HTTP invece del testo di stato HTTP. System.Net.HttpStatusCode.Forbidden dovrebbe restituire 403 anziché "Proibito".Come ottenere il valore numerico da Enum?

Come posso estrarre il valore?

+0

Eventuali duplicati di [Getting Http numero di codice di stato (200, 301, 404, etc.) da HttpWebRequest e HttpWebResponse] (http : //stackoverflow.com/questions/1330856/getting-http-status-code-number-200-301-404-etc-from-httpwebrequest-and-ht) –

risposta

72

Per la maggior parte del cast di Enum è semplicemente il tipo di base che è int32.

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

cos'è un esempio di minoranza che non può essere semplicemente castata ? – Jimmy

+4

@Jimmy, qualsiasi enumerazione che ha un diverso tipo di base. In questi casi è sufficiente eseguire il cast al tipo di base appropriato (uint32, ecc.) ... – JaredPar

+8

Potrei aggiungere che è possibile ottenere il tipo sottostante dell'enumerazione utilizzando il metodo statico Enum.GetUnderlyingType (typeof (MyEnum)). – Yoopergeek

16

Puoi lanciarlo su un numero intero!

int code = (int)enumVariable 
7

System.Convert.ToInt32 (response.StatusCode) restituisce il numero statusCode

+6

Funziona quando hai un enum, ma non hai il tipo di enum. Per esempio. 'void DoSomethingWithEnum (valore Enum) {int X = Convert.ToInt32 (valore); } 'In questo caso un cast normale su int non funziona. –

+0

Funziona anche molto bene se l'enumerazione è un parametro di tipo generico. – Jay