.NET 中是否有任何集合可以防止空条目?

2024-07-04

我特别考虑的是履行一套合同的集合,但我认为这个问题可以适用于任何类型。 .NET 框架中是否存在可以防止空条目的集合?我想要的具体行为是这样的:

var set = new HashSet<object>();
bool added = set.Add(null);
Console.WriteLine(added); // prints "False"

这不是内置的行为HashSet<T>。是否有任何集合确实有这种(或类似)行为,或者我最好自己推出?如果是后者,最好的方法是什么?我应该直接继承自HashSet<T>或者只是包裹它?

编辑:要明确的是,这只是闲想。主要是因为我想不出任何理由want允许null成一组对象。我对此没有任何特别的需求。


没有像这样的内置类HashSet<T>除了这个单一的行为。

如果您需要这个,我建议您自己滚动。我不建议子类化HashSet<T>, 然而。没有任何方法(例如Add,您明确想要更改的)是虚拟的,因为它在设计时并没有真正考虑到子类化。这将导致奇怪的使用行为,因为您将隐藏继承的方法。

只需封装一个HashSet<T>,并公开您需要的成员。您必须添加的唯一真正的“代码”是对 Add 方法的单个空检查 - 否则,只需将所有方法传递到封装的实例即可。

如果您希望这是一个泛型类,则需要添加一个额外的约束以仅适用于类,因为您希望进行空检查:

public class ValueSet<T> : ICollection<T>, IEnumerable<T>, ICollection
    where T : class
{
     private HashSet<T> hashSet = new HashSet<T>();
     // ... Implement all members as needed...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET 中是否有任何集合可以防止空条目? 的相关文章

随机推荐

  • Phantomjs 可以工作,但速度很慢

    我正在尝试使用 PhantomJS 截取网页的屏幕截图 具体来说 我正在使用捕获的示例espn com from this http skookum com blog dynamic screenshots on the server wi
  • iOS 7 AVPlayer AVPlayerItem 持续时间在 iOS 7 中不正确

    我的应用程序中有以下代码 NSURL url NSURL fileURLWithPath self DocDir stringByAppendingPathComponent self FileName isDirectory NO sel
  • 构建失败:程序类型已存在:com.facebook.ads.Ad

    我尝试在 Android Studio 中构建一个模块 它似乎可以在设备上运行 但是当我尝试构建 APK 时 出现错误 Program type already present com facebook ads Ad 这是完整的日志 org
  • 界面生成器中 UIView 的边框颜色不起作用?

    我正在尝试通过 IB 设置视图的图层属性 除了边框的颜色之外 一切正常 属性layer borderColor 我记得一年前遇到过这个问题 最终我以编程方式解决了这个问题 而且 我仍然可以以编程方式执行此操作 但我很好奇为什么layer b
  • TypeScript .d.ts 语法 - 导出和声明

    我需要帮助尝试了解创建 d ts 文件的正确方法 让我困惑的是有些人使用这种语法 lib a d ts namespace My Foo Bar interface IFoo interface IBar vs lib b d ts dec
  • laravel 5 vue.js csrf 令牌

    我已经花了一段时间让这个 csrf 令牌与 vue js 示例一起使用 但它一直说我没有令牌 我尝试过各种变化 底部 不是头部 而是身体末端之前 html div section conten div
  • 版本升级后异常

    使用 Optaplanner v7 11 0 Final 的项目上出现分数持久性问题 我升级到最新版本 v7 25 0 Final 但出现以下异常 The externalObject Etat super DbObject id 11 l
  • 分组依据,在 pandas 中

    select df id count distinct airports as num from df group by df id having count distinct airports gt 3 我正在尝试在 Python pan
  • 在 javascript/jquery 中从 JSON 中删除元素

    我在 javascript 中从 JSON 对象删除数据时遇到问题 我正在动态创建此 JSON 并且删除也将动态进行 下面是我的 JSON 和我所处的情况 brands 51 2046 53 67 64 现在 我必须从中删除 53 我正在使
  • 如何获取 PostgreSQL 中字符串中正则表达式匹配的位置?

    我有一个包含书名的表 我想选择标题与正则表达式匹配的书籍 并按标题中正则表达式匹配的位置对结果进行排序 单字搜索很容易 例如 TABLE book id title 1 The Sun 2 The Dead Sun 3 Sun Kissed
  • 检查Column中是否存在Cell值,然后获取NEXT Cell的值

    检查列中是否存在单元格值后 我需要获取匹配单元格旁边的单元格的值 例如 我检查中的值是否cell A1存在于column B 并假设它匹配B5 那么我想要的值是cell C5 为了解决前半个问题 我这样做了 IF ISERROR MATCH
  • 如何构建我的 PHP 项目?

    我即将开始另一个大型 PHP 项目 这次 我打算让项目文件夹变得整洁 所以我有几个关于保持我的项目干净和干燥的问题 如何区分 PHP 源文件和浏览器应访问的 PHP 文件 换句话说 我如何清楚哪些 PHP 文件提供输出 哪些提供函数或类定义
  • 在 Python 中访问 Firefox 3 cookie

    我正在尝试制作一个 python 脚本 该脚本将在 Firefox 中使用 cookie 访问网站 如果 cookielib MozillaCookieJar 支持 Firefox 3 它就会工作 有没有办法在 python 中访问 Fir
  • GO 语句破坏了 .NET 中的 SQL 执行

    我有一个非常简单的 C 命令 shell 应用程序 它执行 SQL Server 生成的 SQL 脚本来编写模式和数据脚本 它在 GO 声明中爆炸了 错误信息 GO 附近的语法不正确 这是完整的 sql 脚本 Object Table gy
  • android finish() 方法不会从内存中清除应用程序

    我有一个活动 我调用 finish 方法 但该活动没有从内存中清除 调用 finish 后 我看到 onDestroy 方法已成功执行 并且我清除了其中的所有变量和内容 应该从内存中清除它还是android的工作方式 据我了解 活动的生命周
  • 如何在MIPS汇编编程中打印数字的前几位? [复制]

    这个问题在这里已经有答案了 我是 MIPS Assembly 编程的初学者 我想知道在读入数字后如何打印数字的第一个数字 data number 1 word text read in first number li v0 5 syscal
  • 为什么Scala 支持影子变量? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Python 与 Hive 的连接

    我安装了 Hortonworks Hive ODBC 驱动程序并在数据源中创建了连接 我测试了它并且成功了 我安装了PyODBC并编写了以下代码 import os sys pyodbc con pyodbc connect DSN MyC
  • Python Selenium Webdriver - 代理身份验证

    我想将 Selenium Webdriver 与需要用户身份验证的代理一起使用 这可能吗 这就是我到目前为止所拥有的 但我不知道在哪里放置凭据 user pass proxy port from selenium import webdri
  • .NET 中是否有任何集合可以防止空条目?

    我特别考虑的是履行一套合同的集合 但我认为这个问题可以适用于任何类型 NET 框架中是否存在可以防止空条目的集合 我想要的具体行为是这样的 var set new HashSet bool added set Add null Consol