为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
交互式爱情 2022-11-22 16:26:08

现在我有一个 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贡献1617条经验 获得超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()


查看完整回答
反对 回复 2022-11-22
  • 1 回答
  • 0 关注
  • 8 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信