2010-05-11 45 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