2012-06-04 107 views
0

我有一種方法需要一個參數來區分幾種不同的情況。我可以傳遞一個字符串,並希望我(或將來使用該類的人)將使用其中一個已識別的命令。我寧願有一個這樣的結構:創建參數的自定義選擇

方法聲明:

myMethod(myOption opt){ ... } 

和調用應該是這樣的:

myMethod(myOption.option1); 
的方法

我應該能夠做到這一點:

if (opt == myOption.option1){ ... } 

我相信這是消息框的工作方式,當我傳遞按鈕或圖標的配置。

我做了很多實驗並搜索了很多,但是我沒有找到任何東西。也許這是因爲我還沒有找到正確的關鍵詞組合來提供給谷歌。

感謝您的幫助!

+0

你的意思是你想調用隨機數的參數或通過不同類型的構造函數調用它,我不明白你的問題! –

+0

我想用一個參數調用該方法。而這個參數的值必須是給定數量的可能性之一。這正是RJ Lohan所展示的。 – Jan

+0

是的,對不起,我錯誤地理解你的問題,不要錯過打勾RJ作爲一個正確的答案:) –

回答

6

如果您有一組有限的可用參數,那麼枚舉可能是您的方法最適合的參數類型。因此,創建一個枚舉來作爲參數傳遞;

public enum MyOption 
{ 
    Option1, 
    Option2, 
    Option3, 
} 

public void MyMethod(MyOption option) 
{ 
    switch (option) 
    { 
     case MyOption.Option1: 
      // do stuff 
      return; 
     case MyOption.Option2: 
      // do stuff 
      return; 
     case MyOption.Option3: 
      // do stuff 
      return; 
    } 
} 
+0

嘿,謝謝!這正是我所期待的。 – Jan

+0

另一個問題:我可以附加屬性的選項?在我的情況下,每個選項代表更長的文本。能夠在MyMethod(MyOption選項)中將它用作option.Text(或一般的option.myProperty)將會很酷。 – Jan

+0

如果你的選項有更多的上下文,而不僅僅是'選項',也許你需要使用一個類或結構。如果上下文有限,也許可以使用DescriptionAttribute來爲您的枚舉值賦值,並在您的代碼中讀取它。 –