IEquatable,如何正确实施[重复]

2024-01-01

我正在使用 .net 2.0 和 c#,并且我已经在我的类中实现了 IEquatible 接口,如下所示:-

public MyClass() :  IEquatable<MyClass>
{
    Guid m_id = Guid.NewGuid();

    public Guid Id
    {
        get
        {
            return m_id;
        }
    }

    #region IEquatable<MyClass> Members

    public bool Equals(MyClass other)
    {
        if (this.Id == other.Id)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    #endregion
}

这是不好的编程习惯吗?我读到我还需要实现 Object.Equals 和 Object.GetHashCode ,但我不确定为什么。

我希望能够检查 MyClass 的实例是否已包含在 MyClass 类型的通用列表中。为什么框架只建议您仅实现 Equals?

任何帮助将不胜感激。


您可以使用 LINQ 检查您的列表是否包含使用自定义谓词作为条件的项目。在这种情况下你不需要覆盖Equals也不实施IEquatable:

// check if the list contains an item with a specific ID
bool found = someList.Any(item => item.ID == someId);

压倒一切Equals (with GetHashCode)并实施IEquatable如果您需要将物品存储在Dictionary or a Hashtable.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IEquatable,如何正确实施[重复] 的相关文章

  • 将类对象放置在向量中?

    我注意到我可以将一个类放置在一个向量中 这是我的程序 我收到以下错误 out blackjack exe blackjack obj blackjack obj error LNK2019 unresolved external symbo
  • 按扩展名过滤搜索文件返回太多结果

    我正在开发一个 C 控制台应用程序 它必须管理 Windows 操作系统上的文件 我需要获取具有特定扩展名的文件名 列表 我找到了很多解决方案 最建议的是以下一种 HANDLE hFind WIN32 FIND DATA data hFin
  • MVC3中设置下拉列表中的所选项目

    我必须为视图中的下拉列表设置所选项目 但它不起作用 View div class editor label Html LabelFor model gt model Gender div div class editor field Htm
  • 如何将 SOLID 原则应用到现有项目中

    我对这个问题的主观性表示歉意 但我有点卡住了 我希望之前处理过这个问题的人能够提供一些指导和建议 我有 现在已经成为 一个用 C 2 0 编写的非常大的 RESTful API 项目 并且我的一些类已经变得巨大 我的主要 API 类就是一个
  • java中如何重新初始化int数组

    class PassingRefByVal static void Change int pArray pArray 0 888 This change affects the original element pArray new int
  • 有些有助于理解“产量”

    在我不断追求少吸的过程中 我试图理解 产量 的说法 但我不断遇到同样的错误 someMethod 的主体不能是迭代器块 因为 System Collections Generic List 不是迭代器接口类型 这是我被卡住的代码 forea
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • SecurityAction.RequestMinimum 在 .Net 4.0 中已过时

    最近 我们的 Net 客户端库正在升级以针对 Net 4 0 进行编译 将目标框架更改为4 0后 应用程序出现一些编译错误 In AssemblyInfo cs assembly SecurityPermission SecurityAct
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • 假装 .NET 字符串是值类型

    在 NET 中 字符串是不可变的 并且是引用类型变量 这通常会让新的 NET 开发人员感到惊讶 因为他们的行为可能会将它们误认为是值类型对象 然而 除了使用实践StringBuilder对于长连接 尤其是 在循环中 在实践中是否有任何理由需
  • 在 C# 中检查 PowerShell 执行策略的最佳方法是什么?

    当你跑步时Get ExecutionPolicy在 PowerShell 中 它得到有效的执行政策 https learn microsoft com en us powershell module microsoft powershell
  • 如何使用 x64 运行 cl?

    我遇到了和这里同样的问题致命错误 C1034 windows h 未设置包含路径 https stackoverflow com questions 931652 fatal error c1034 windows h no include
  • 从 C# 使用 Odbc 调用 Oracle 包函数

    我在 Oracle 包中定义了一个函数 CREATE OR REPLACE PACKAGE BODY TESTUSER TESTPKG as FUNCTION testfunc n IN NUMBER RETURN NUMBER as be
  • memcpy/memmove 到联合成员,这是否设置“活动”成员?

    重要说明 一些评论者似乎认为我是从工会抄袭的 仔细看memcpy 它从普通旧地址复制uint32 t 它不包含在联合中 另外 我正在复制 通过memcpy 到工会的特定成员 u a16 or u x in a union 不直接到整个联盟本
  • 将二变量 std::function 转换为单变量 std::function

    我有一个函数 它获取两个值 x 和 y 并返回结果 std function lt double double double gt mult double x double y return x y 现在我想得到一个常量 y 的单变量函数
  • Oauth2中如何同时撤销RefreshToken和使AccessToken失效

    我正在使用 Owin Oauth2 授权和资源服务器相同 开发单页面应用程序 AngularJS Net MVC Json Rest API 的身份验证流程 我选择了 Bearer Token 路由而不是传统的 cookie session
  • C++ 对象用 new 创建,用 free() 销毁;这有多糟糕?

    我正在修改一个相对较大的 C 程序 不幸的是 并不总是清楚我之前的人使用的是 C 还是 C 语法 这是在一所大学的电气工程系 我们 EE 总是想用 C 来做所有事情 不幸的是 在这种情况下 人们实际上可以逃脱惩罚 但是 如果有人创建一个对象
  • 在 Win32 控制台应用程序中设置光标位置

    如何在 Win32 控制台应用程序中设置光标位置 最好 我想避免制作句柄并使用 Windows 控制台功能 我花了整个早上沿着那条黑暗的小巷跑 它产生的问题比它解决的问题还要多 我似乎记得当我在大学时使用 stdio 做这件事相对简单 但我
  • 没有“对 *this”功能的右值引用的解决方法

    我有一个围绕可移动对象的代理容器类 并希望代理能够隐式生成对底层对象的右值引用 但仅当代理本身被移动时 我相信我将能够按照提案 n2439 实施此行为 将移动语义扩展到 this http www open std org jtc1 sc2
  • 在 System.Type 上使用条件断点时出错

    这是函数 public void Init System Type Type this Type Type BuildFieldAttributes BuildDataColumns FieldAttributes 我在第一行设置了一个断点

随机推荐

  • 桌面应用程序 + Microsoft 身份验证错误

    我对桌面应用程序开发的了解有限 并且我在混合平台中开发了一个应用程序 并且在从桌面应用程序进行 Microsoft 身份验证 Azure ad 期间遇到此错误消息 仅当您从信任的商店或网站下载应用程序时才可以继续 如果需要从 Azure 应
  • Antlrworks - 无关输入

    我是这方面的新手 因此我需要你的帮助 我正在尝试解析 Wikipedia Dump 我的第一步是将它们定义的每个规则映射到 ANTLR 不幸的是我遇到了第一个障碍 第 1 行 8 外部输入 需要 我不明白发生了什么事 请帮助我 My cod
  • xterm 退出后在终端中保留 less 页面

    我经常使用 less 查看文件 并且想记住我刚刚在文件中看到的内容 但是 当我通过按 q 键退出 less 时 我的 xterm 窗口会删除显示文件的 less 页面 而只显示我的命令提示符 当我退出时 如何在终端上保留较少的输出 less
  • 手动 DAL 和 BLL 与 ORM

    哪种方法更好 1 使用一个第三方ORM系统或2 手动编写DAL和BLL代码使用数据库 1 在我们的一个项目中 我们决定使用 DevExpress XPO ORM 系统 但我们遇到了很多小问题 浪费了我们很多时间 AMD仍然时不时地遇到来自这
  • 阻止 ConstraintLayout 中的视图重叠

    我正在尝试使用 ConstraintLayout 构建一个具有三个视图的简单布局 当左视图中的文本很长时 我想看到这个 但我得到的是这样的 左视图向右增长太多并隐藏了中间视图 这是我的代码
  • 通过货物安装板条箱时出错:指定的包没有二进制文件

    我正在尝试使用 Cargo 在我的系统 Arch Linux 上安装 Rust 箱子 我可以搜索板条箱并找到我需要的东西 例如 cargo search curl head n3 Updating registry https github
  • 在公共功能分支中使用 git rebase

    您可以在网上看到人们建议不要使用git rebase在公共分支中 但如果您总是对功能分支进行变基 我看不出问题是什么 我的团队总是使用分支来实现功能 哇 我们习惯于在本地拥有它 所以变基不是问题 但有时我们想向其他开发人员展示部分完成的功能
  • 在nodeJs中,有没有一种方法可以在不使用数组大小​​的情况下循环数组?

    假设我有 myArray item1 item2 I tried for var item in myArray console log item 它打印 0 1 我所希望的是拥有 项目1 项目2 是否有任何其他语法可以在不使用的情况下工作
  • 如何在php中获取选定表项的id

    我应该得到id从表中提出请求 但我就是这样做的 我的桌子 id AI 名称 Varchar authir varchar 类别 varchar 我想如果有任何解决方案可以解决这个问题 谢谢我的问题出现在以下几行中 Print td a hr
  • Java Collection 的多个索引 - 最基本的解决方案?

    我正在寻找在 Java 集合上创建多个索引的最基本的解决方案 所需功能 当删除某个值时 与该值关联的所有索引条目都必须删除 索引查找必须比线性搜索更快 至少与 TreeMap 一样快 附带条件 不依赖于大型 如 Lucene 库 没有不常见
  • JSDOM:无法解析 CSS 样式表

    使用以下命令 node modules babel core register js node modules jsdom global register js spec jsx 我正在运行以下测试文件 use strict import
  • 导入后完整日历样式不正确

    我正在尝试在我的项目中使用 React Full Calendar 尽管日历以正确的方式呈现 但样式有点不对劲 目前的情况如下 正如您所看到的 在标题工具栏中 月份单词没有在中间对齐 其他单词和图标也是如此 也许 按钮本身的尺寸在高度上看起
  • 如何使用/安装 python 2to3?

    由此https docs python org 3 4 library 2to3 html https docs python org 3 4 library 2to3 html它说 2to3 应该作为脚本与 python 解释器一起安装
  • 如何告诉 RandomizedSearchCV 选择分布或 None 值?

    假设我们正在努力寻找最好的max depth的参数RandomForestClassifier http scikit learn org stable modules generated sklearn ensemble RandomFo
  • ddply 按 R 中的组求和

    我有一个示例数据框 数据 如下所示 X Y Month Year income 2281205 228120 3 2011 1000 2281212 228121 9 2010 1100 2281213 228121 12 2010 900
  • std::setw 和 unicode 字符

    我的问题如以下最小示例所示 include
  • 如何向此 CSS“切换器”“切换开关”添加文本

    这是实际的 Switcher 生成器 https proto io freebies onoff https proto io freebies onoff 我不清楚如何向事件添加文本 因此 当开关处于默认状态时 会显示某些文本 反之亦然
  • Mathematica 绘图中多个函数的检测和样式设置

    This https stackoverflow com questions 5597566 这个问题让我开始思考 Mathematica 如何检测正在绘制的多个函数 我发现我实在是看不懂这个流程 考虑 Plot 1 Sequence 2
  • 如何为二维数组的 qsort 编写比较器函数?

    我有一个 n 2 大小的数组 我想根据第二列的值使用 qsort 对它们进行排序 include
  • IEquatable,如何正确实施[重复]

    这个问题在这里已经有答案了 我正在使用 net 2 0 和 c 并且我已经在我的类中实现了 IEquatible 接口 如下所示 public MyClass IEquatable