2009-10-08 23 views
48

Örneğin, System.Net.HttpStatusCode Enum, HTTP Durum Metni yerine HTTP Durum Kodları almak istiyorum. System.Net.HttpStatusCode.Forbidden "Yasak" yerine 403 döndürmelidir.Sayısal değer Enum'dan nasıl alınır?

Değeri nasıl çıkarabilirim?

+0

Olası yinelenen döndürür [Alma Http gelen Durumu kod numarası (200, 301, 404, vs.) HttpWebRequest ve HttpWebResponse] (http : //stackoverflow.com/questions/1330856/getting-http-status-code-number-200-301-404-etc-from-httpwebrequest-and-ht) –

cevap

72

Enum'un çoğunluğu için int32 olan taban türüne basitçe dökülür.

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

Basitçe döküm edilemeyen bir azınlık örneği nedir? ? – Jimmy

+4

@Jimmy, farklı bir taban türüne sahip herhangi bir enum. Bu durumlarda, sadece uygun taban türüne (uint32, vb.) Atmanız gerekir ... – JaredPar

+8

Enum'un temel türünü Statik Enum.GetUnderlyingType (typen (MyEnum)) yöntemini kullanarak alabileceğinizi ekleyebilirim. – Yoopergeek

16

sadece bir tamsayı yayın yapabilirsiniz!

int code = (int)enumVariable 
7

System.Convert.ToInt32 (response.StatusCode) statusCode numaralı ait

+6

Bu, bir numaranız olduğunda çalışır, ancak enum türünüz yoktur. Örneğin. void DoSomethingWithEnum (Enum değeri) {int X = Convert.ToInt32 (value); } 'Bu durumda int için normal bir cast çalışmaz. –

+0

Bu, sizin numaranız genel bir tür parametresi ise, çok iyi çalışır. – Jay

İlgili konular