现在我有一个 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" };
1 回答
人到中年有点甜
TA贡献1895条经验 获得超7个赞
创建“常量”Set 的最佳方法可能是使用以下方法将您的接口公开HashSet
为它的IEnumerable
接口:
public static readonly IEnumerable<string> fruits = new HashSet<string> { "Apples", "Oranges" };
public
: 每个人都可以访问它。static
:无论创建了多少个父类实例,内存中只会有一个副本。readonly
: 您不能将其重新分配给新值。IEnumerable<>
:您只能遍历其内容,而不能添加/删除/修改。
要进行搜索,您可以使用 LINQ 来调用Contains()
您的IEnumerable
,它足够聪明,知道它由 a 支持HashSet
并委托适当的调用以利用您的集合的散列特性。(嗯,好吧,它通过 ICollection 调用它,但最终还是以 HashSet 的重写方法结束)
Debug.WriteLine(fruits.Contains("Apples")); // True
Debug.WriteLine(fruits.Contains("Berries")); // False
fruits = new HashSet<string>(); // FAIL! readonly fields can't be re-assigned
fruits.Add("Grapes"); // FAIL! IEnumerables don't have Add()
- 1 回答
- 0 关注
- 75 浏览
添加回答
举报
0/150
提交
取消