2010-12-15 79 views
0

我有一個打印字符串列表的方法GenerateOutput。該方法將多個枚舉作爲參數,並根據哪些標誌被輸入到方法中輸出結果。我知道枚舉是爲編譯時間設計的,但是可以根據用戶在程序中選擇的選項在運行時更改輸出嗎?基本上,我有各種代表可能的枚舉的複選框。當用戶選擇一個選項時,應將該標誌作爲參數添加到GenerateOutput方法中。這可以做到嗎?謝謝運行時輸入枚舉

+0

請把你的例子/代碼r GenerateOutput函數 – Francisco 2010-12-15 19:35:36

+0

這只是測試代碼,以使其工作。該方法僅僅是'void GenerateOutput(TestEnumerations tEnums)'並將'tEnums'值打印到控制檯。我想在運行時輸入多個tEnums。 – Brap 2010-12-15 19:47:04

+0

爲什麼不輸入多個tEnums,例如,逗號或其他字符,然後解析它在你的方法?像:t1,t2然後使用string.split(','),然後Enum.Parse爲每個值? – Ostap 2010-12-15 20:05:40

回答

3

我想你想做什麼(我不知道我完全理解你的問題)是在運行時建立一個枚舉值傳遞給函數。

假設你的枚舉與[國旗]屬性指定:

[flags] 
public enum TestEnumerations 
{ 
    Value1 = 1, 
    Value2 = 2, 
    Value3 = 4, 
    //etc 
} 

,那麼你可以這樣做:

// In checkbox handlers, e.g. 
tEnums |= TestEnumerations.Value1; 

// Where you call the method 
GenerateOutput(tEnums); 

另外,如舊金山的意見建議,有一個List列表(或HashSet如果你只想要每個枚舉值出現一次):

// In checkbox handlers, e.g. 
list.Add(TestEnumerations.Value1); 

// Where you call the method 
GenerateOutput(list); 
+0

謝謝。我不知道你可以做'| ='。這應該做到這一點。 – Brap 2010-12-15 20:27:10

+1

只有當值爲2的冪並且設置了[flags]屬性時它纔會起作用。 – 2010-12-15 20:28:02