[英]assign enum in switch case in c#
我需要像下面這樣更改case語句中的Enum
var en;
switch (RequestTypID.ToString())
{
case "15":
en = enum1;
break;
case "16":
en = enum2;
break;
case "14":
en = enum3;
break;
case "13":
en = enum4;
break;
default:
break;
}
然后將其粘貼到這樣的foreach循環中
foreach (var status in Enum.GetValues(typeof(en)))
我遇到錯誤,提示必須進行初始化? 我應該為en變量聲明什么類型? 我應該為狀態變量聲明什么類型?
好吧,我已經在代碼中添加了這一行,並解決了一個問題;
var en = typeof(enum1);
但是現在它說找不到每個循環中的en參考?
我也將開關盒改成這樣
switch (RequestTypID.ToString())
{
case "15":
en = typeof(enum1);
break;
....
我遇到錯誤,提示必須進行初始化?
這是合理的,因為此var en;
是不正確的。 當我們想隱式聲明某些東西時,我們必須在聲明它時給它賦一個值,以便編譯器推斷出它的類型。
例如, var n = 4;
。 可以將4
存儲到int
類型的變量中。 因此,編譯器在看到此聲明時會理解n int的類型。
您不能使用var
創建變量( var
不是類型),也不能為其分配值。 Var
表示編譯器將查看它的值來評估其type
,但是這里沒有變量的值,因此需要為變量en
分配一個值。分配一個類型為enum1,enum2,enum3,enum4的值 ..
您必須在var
語句的右側添加另一個變量,以便編譯器知道預期的結果。
您應該執行以下操作:
var en = YourEnum.Option1;
要么
YourEnum en;
Enum.GetValues
需要類型作為參數。 所以,簡單地宣布,你en
的Type
。
Type en = null;
您不能在不初始化的情況下將其聲明為var
:編譯器需要知道您要使用的實際類型是什么。
另外,您還必須更改開關:
en = typeof(SomeEnum);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.