猿问

如何在 C# 中创建常量哈希集

现在我有一个 const 字符串数组并循环检查值是否存在。但我想要一种更有效的方式来存储我的价值。我知道有一个哈希集,我可以这样使用:

HashSet<string> tblNames = new HashSet<string> ();
tblNames.Add("a");
tblNames.Add("b");
tblNames.Add("c");

但是,是否可以像这样使它成为我班级的常量成员:

public const HashSet<string> tblNames = new HashSet<string>() { "value1", "value2" };



交互式爱情
浏览 76回答 1
1回答

人到中年有点甜

创建“常量”Set 的最佳方法可能是使用以下方法将您的接口公开HashSet为它的IEnumerable接口:public&nbsp;static&nbsp;readonly&nbsp;IEnumerable<string>&nbsp;fruits&nbsp;=&nbsp;new&nbsp;HashSet<string>&nbsp;{&nbsp;"Apples",&nbsp;"Oranges"&nbsp;};public: 每个人都可以访问它。static:无论创建了多少个父类实例,内存中只会有一个副本。readonly: 您不能将其重新分配给新值。IEnumerable<>:您只能遍历其内容,而不能添加/删除/修改。要进行搜索,您可以使用 LINQ 来调用Contains()您的IEnumerable,它足够聪明,知道它由 a 支持HashSet并委托适当的调用以利用您的集合的散列特性。(嗯,好吧,它通过 ICollection 调用它,但最终还是以 HashSet 的重写方法结束)Debug.WriteLine(fruits.Contains("Apples")); // TrueDebug.WriteLine(fruits.Contains("Berries")); // Falsefruits = new HashSet<string>(); // FAIL! readonly fields can't be re-assignedfruits.Add("Grapes"); // FAIL! IEnumerables don't have Add()
随时随地看视频慕课网APP
我要回答