2015-11-05 45 views
0

我想要一個私人的,恆定的成員如何初始化私有靜態只讀HashSet <char>?

private static readonly HashSet<char> _nameChars 
在我的控制器

,包含字符' ', 'a', 'A', ..., 'z', 'Z'。目的是爲了表單的服務器端驗證。但是,我如何初始化那個HashSet

private static readonly HashSet<char> _nameChars = ????? 

有沒有這樣做的好方法?我知道C++的支架初始化爲std::set

+0

如果初始化更復雜,可以使用靜態構造函數:https://msdn.microsoft.com/en-us/library/k9x6w0hc.aspx –

回答

5

C#也有集合初始化:

private static readonly HashSet<char> _nameChars = new HashSet<char> { 'a', 'b', ...}; 

你也可以使用一個構造函數IEnumerable<T>參數:

private static readonly HashSet<char> _nameChars = new HashSet<char>("abcde..."); 

我找到第二個方法更具有可讀性。

+0

集合初始值設定項使用循環來初始化'HashSet ' ,構造函數也是這樣。但我更喜歡第二個,因爲它更容易維護。 –

+0

很高興知道,謝謝! –

+0

@TimSchmelter對,沒有什麼可以優化'string'參數。因爲HashSet的容量可以初始化爲ICollection .Count,所以'ICollection '參數更快。 –