簡體   English   中英

在C#中的切換情況下分配枚舉

[英]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需要類型作為參數。 所以,簡單地宣布,你enType

Type en = null;

您不能在不初始化的情況下將其聲明為var :編譯器需要知道您要使用的實際類型是什么。

另外,您還必須更改開關:

en = typeof(SomeEnum);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM