2010-05-11 28 views
4

這是我的代碼現在。但我想將這些「添加」從構造函數中移出。當我們new時,我們可以初始化Dictionary嗎?或者你有另一個更好的主意。基本上我想定義幾個在很多地方使用的字符。順便說C#,我可以從構造函數中移出字典初始代碼嗎?

public static Dictionary<actionEnum, String> loginAction = new Dictionary<actionEnum, string> { 
    { actionEnum.In, "I" }, 
    { actionEnum.Out, "O" }, 
    { actionEnum.Fail, "F" } 
}; 

注意的是,字典是可變的;:

public class User 
    { 
     public enum actionEnum 
     { 
      In, 
      Out, 
      Fail 
     } 

     public static Dictionary<actionEnum, String> loginAction = new Dictionary<actionEnum, string>(); 

     public User() 
     { 
      loginAction.Add(actionEnum.In, "I"); 
      loginAction.Add(actionEnum.Out, "O"); 
      loginAction.Add(actionEnum.Fail, "F"); 


     } 
..... 
} 

回答

16

您可以使用C#3的collection initializer syntax任何代碼都可以添加或刪除值。

+1

沒有意識到他們有多參數語法。尼斯。 – micahtan 2010-05-11 16:05:13

+0

不僅字典本身是可變的,而且在你和他的代碼中,引用也是可變的。要修復後者,請將其標記爲「只讀」。爲了修復前者,好吧,一些人已經推出了他們自己的ReadOnlyDictionary,比如這裏:http://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=29 – 2010-05-11 19:12:17

相關問題