在 IEquatable 实现中需要进行引用检查

2024-01-01

我有一个实现的类IEquatable<T>。是否需要进行背景调查Equals()还是在框架中得到了照顾?

class Foo : IEquatable<Foo>
{
    int value;
    Bar system;

    bool Equals(Foo other)
    {
        return this == other || 
        ( value == other.value && system.Equals(other.system) );
    }
}

在上面的例子中是this==other声明是多余的还是必要的?

Update 1

我知道我需要更正代码,如下所示:

    bool Equals(Foo other)
    {
        if( other==null ) { return false; }
        if( object.ReferenceEquals(this, other) ) { return true; } //avoid recursion
        return value == other.value && system.Equals(other.system);
    }

感谢您的回复。


这通常是一种优化 - 这会很奇怪Equals如果没有它,实施就会失败。因此我会not认为这是必要的,但也没有“在框架内得到照顾”。 I 是一种成本低廉的优化,因此通常值得包含。

请注意,如果您是also超载==,那么你可能应该使用object.ReferenceEquals来执行这些比较。

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

在 IEquatable 实现中需要进行引用检查 的相关文章

  • 在 C# 中使用“using”关键字避免多次处置的最佳实践

    当变量是 IDisposable 时 我们有using关键字来管理处置 但是如果我们在方法中返回值怎么办 using twice StringContent stringToStringContent string str using St
  • 如何使用 ASP.NET MVC 编辑多选列表?

    我想编辑一个如下所示的对象 我希望用 UsersGrossList 中的一个或多个用户填充 UsersSelectedList 使用 mvc 中的标准编辑视图 我只得到映射的字符串和布尔值 下面未显示 我在 google 上找到的许多示例都
  • MFC CList 支持复制分配吗?

    我在 MSVC 中查找了 CList 定义afxtempl h http www cppdoc com example mfc classdoc MFC AFXTEMPL H html并记录在MSDN http msdn microsoft
  • 将 OpenCV Mat 转换为数组(可能是 NSArray)

    我的 C C 技能很生疏 OpenCV 的文档也相当晦涩难懂 有没有办法获得cv Mat data属性转换为数组 NSArray 我想将其序列化为 JSON 我知道我可以使用 FileStorage 实用程序转换为 YAML XML 但这不
  • 如何以编程方式播放 16 位 pcm 数组 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个包含 16 位 pcm 值的短 数组 我希望能够在不添加任何标题 也不将任何文件保存到内存的情况下播放它 我知道我可能需要一个提供
  • while循环中的变量初始化

    我有一个可以分块读取文件的函数 public static DataObject ReadNextFile 数据对象看起来像这样 public DataObject public string Category get set And ot
  • 为什么需要数字后缀?

    C 语言 我确信还有其他语言 需要在数字文字末尾添加后缀 这些后缀指示文字的类型 例如 5m是一个小数 5f是一个浮点数 我的问题是 这些后缀真的有必要吗 或者是否可以从上下文中推断出文字的类型 例如 代码decimal d 5 0应该推断
  • 如何使用 Roslyn 通过扩展方法、静态类中的方法以及带有 ref/out 参数的方法来访问调用

    我正在致力于创建一个开源项目 用于创建 NET UML 序列图 该项目利用名为 js sequence diagrams 的 javascript 库 我不确定 Roslyn 是适合这项工作的工具 但我想我应该尝试一下 所以我整理了一些概念
  • 用于连接 DataTable 上的动态列的动态 LINQ

    我目前遇到的情况不确定如何继续 我有两个从数据库填充的数据表 我还有一个可用的列名称列表 可用于将这两个数据表连接在一起 我希望编写一组 LINQ 查询 这些查询将 显示两个数据表中的行 内部联接 用于从一个数据表更新另一个数据表 显示一个
  • Xamarin - SignalR 挂在连接上

    我正在尝试将我的 Xamarin 应用程序连接到托管在 Azure 上的 SignalR 后端 我遇到的问题是每次我在 HubConnection 上调用 StartAsync 时 它都会挂起客户端并且请求永远不会完成 我尝试通过应用程序进
  • Resharper:IEnumerable 的可能多重枚举

    我正在使用新的 Resharper 版本 6 在我的代码中的几个地方 它给一些文本加了下划线 并警告我可能存在IEnumerable 可能的多重枚举 我理解这意味着什么 并在适当的情况下采纳了建议 但在某些情况下 我不确定这实际上是一个大问
  • 无法为 wsdl 文件创建服务引用

    I have wsdl文件和xsd我本地机器上的文件 我想在项目中添加服务引用 我没有网络服务 我只有wsdl file 我收到以下错误 The document was understood but it could not be pro
  • 将错误代码映射到 C++ 中的字符串

    将错误代码从枚举映射到字符串的更有效方法是什么 在 C 中 例如 现在我正在做这样的事情 std string ErrorCodeToString enum errorCode switch errorCode case ERROR ONE
  • 如何在dll级别读取app.config? [复制]

    这个问题在这里已经有答案了 我在一个解决方案中有一个控制台应用程序项目和库项目 dll The 图书馆项目有 app config 文件 我在其中存储我在库中使用的一些键值对 控制台应用程序引用此 dll 我有另一个 app config
  • Xamarin.Forms UWP 项目中标题栏和选项卡之间令人恼火的空白

    我几乎是新手Xamarin Forms我正在开发一个相当简单的跨平台应用程序 该应用程序在 Android 中显示得足够好 但在 UWP 中却出现了一个愚蠢的空白 该项目由一个 TabbedPage 组成 其中包含 4 个 Navigati
  • 无法识别解决方案文件夹中的 Visual Studio 2017 Nuget.config

    我在使用 Visual Studio 2017 时遇到问题 新的解决方案不断引用 C Users yopa AppData Roaming NuGet Nuget config 中意外位置的 Nuget config 文件 我已将 nuge
  • printf或iostream如何指定点后的最大位数

    字符串采用什么格式printf or iomanip我应该使用 iostream 中的运算符以以下格式打印浮点数 125 0 gt 125 125 1 gt 125 1 125 12312 gt 125 12 1 12345 gt 1 12
  • 这种尺寸对齐是如何工作的

    对于所提供的评论 我无法理解以下代码 这段代码的作用是什么 以及等效的代码是什么8 aligned segment size must be 4 aligned attr gt options ssize 3 Here ssize is o
  • 将 Swagger 与命名空间版本的 WebApi 结合使用

    我已经找到了如何使用基于名称空间的 WebAPI 版本这个班 https aspnet codeplex com SourceControl changeset view dd207952fa86 Samples WebApi Namesp
  • C++ Boost ASIO 简单的周期性定时器?

    我想要一个非常简单的周期性计时器每 50 毫秒调用我的代码 我可以创建一个始终休眠 50 毫秒的线程 但这很痛苦 我可以开始研究用于制作计时器的 Linux API 但它不可移植 I d like使用升压 我只是不确定这是否可能 boost

随机推荐

  • 使用 Thread.Start 与 QueueUserWorkItem 的优点

    在多线程 NET 编程中 使用 ThreadPool QueueUserWorkItem 与通过 new Thread 和 Thread Start 启动我自己的线程的决策标准是什么 在服务器应用程序 比如说 ASP NET 应用程序或 W
  • Safari 移动设备上的 填充错误?

    这类似于 也未回答 问题 3430506 https stackoverflow com questions 3430506 但适用于输入标签而不是 HTML5 元素 在 按钮上 iPhone 移动 Safari 浏览器会向左侧和右侧添加填
  • 在 Google 表格的一组数据中添加空白行

    我有一组数据 我期待的是在每组 3 个值之后添加 2 个空白行 如下所示 希望得到帮助来解决这个问题 您可以在这里找到示例谷歌表 https docs google com spreadsheets d 11nMvUWn3xcTfxlk4v
  • 如何使用 toBuffer 使用 [node]graphicsmagick 创建新图像

    我正在尝试创建一个新图像 该图像最终将通过 gridfs 插入到 mongo 数据库中 我宁愿避免向文件系统写入任何内容 所以最好的路线似乎是创建一个新图像 https github com aheckmann gm basic usage
  • HTML-CSS 覆盖层以居中元素覆盖整个页面

    I want to create a simple full screen overlay with loader and text in the center I have some problems with the text I wa
  • 在ant编译中包含JAR文件

    我想编译一些 java文件放入 JAR 中 我想在另一个应用程序中使用这个 JAR 文件 这是在第二个应用程序中使用第一个应用程序中的函数的好方法吗 我的目标是不重复代码 我怎样才能编辑build xml为第二个应用程序创建包含我创建的 J
  • 使用 pywinauto 自动化点击开始按钮

    我是 python pywinauto 的新手 我想自动执行一个简单的步骤 即单击 Windows 开始按钮打开控制面板并选择管理工具 最后想检查该复选框是否已选中 我陷入了如何单击 Windows 开始按钮的第一步 from pywina
  • jQuery datepicker 获取显示的月份和年份不是当前的

    我试图在点击日期选择器标题左侧和右侧的 下一个 和 上一个 链接后获取 显示的 月份和年份 目前我正在使用获取月份 var selectedMonth calendar datepicker getDate getMonth 1 但它只返回
  • 将多个工作簿中的数据复制并粘贴到另一个工作簿中的一个工作表

    我希望你能帮忙 我目前有一段代码 请参见下文 我希望它做的是允许用户选择包含工作簿的文件夹 然后打开每个工作簿 从每个工作簿中选择一个名为 SearchCaseResults 的工作表 将每个 SearchCaseResults 中的数据从
  • 显示从 MySQL 填充数据集的进度

    我目前正在使用 C 和 MySQL 数据库后端开发一个应用程序 我的程序最终可能会从数据库加载大量数据并添加到数据集中以在 DataGridView 中显示 我希望能够显示数据集填充的进度 但不确定如何获取它在数据库中位置的引用 下面是我目
  • 从 NuGetV3 API 获取包

    我有兴趣使用非 NET 语言为 NuGet v3 API 编写客户端库 获取包裹需要哪些请求 响应是什么样的 i e 获取 包版本 获取 包版本 您还可以链接到涵盖此场景的官方文档吗 Here https learn microsoft c
  • python中有strncpy()等价的函数吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 python中C语言的strncpy 有等价的函数吗 我想用第一个字符串替换第二个字符串中的 6 个字符 美妙 应改为 美丽 下面是C中的
  • 使用 Google 地图 API 或任何其他方式进行旅行推销员

    我有一个地址列表 需要找到到达每个地址并返回起点的最佳路线 我认为使用 Google Maps API 可以用 8 个路径点来计算 但 8 个路径点不足以满足我的目的 有没有人提供超过 8 个航点的路线优化 我的意思是一定有 对吗 这是许多
  • win32com + Excel + Django + Apache = 问题

    我在 Web 应用程序中打开 Excel 文档时遇到一些问题 在 Apache mod wsgi Windows 2008 Server 下运行 没有 当应用程序在 django 开发服务器上运行时出现问题 一个线程 My code def
  • 单击播放按钮时,YouTube 视频在 webView 中显示黑屏

    我尝试了这个 但它不起作用 webView getSettings setJavaScriptEnabled true webView loadUrl String valueOf https techx pk youtube videos
  • 如何配置播放框架以将我的工件存储库用于所有依赖项?

    我正在尝试添加一个本地 Maven 存储库 该存储库是我使用用于缓存 Maven 存储库的神器设置的 继依赖指令 http www playframework org documentation 1 2 3 dependency我已经找到了
  • 平衡二叉搜索树

    我需要构建一个平衡二叉搜索树 到目前为止 我的程序插入了从 1 到 26 的数字 但我的程序没有将其构建成平衡二叉搜索树 如果有人可以查看我的代码并帮助我 我将不胜感激 public class TreeNode TreeNode left
  • 如何在 UML 类图中显示私有继承关系

    在 C 中 由于私有继承不被视为is a关系 它应该如何在类图中显示以及是否显示为has a那么如何区分组合和私有继承呢 它应该是一个组合关系 子类一侧的实心黑色菱形 因为 私有继承的意思是 根据 实现 但在这方面它可以简单地视为与 具有
  • Solr 查询过滤文档,数组中至少有一个值(指定值除外)

    有没有一种方法可以过滤查询 这样我将获得具有特定数组字段的文档 其中包含除我传递的值之外的至少一个其他值 例如我有 3 个文档
  • 在 IEquatable 实现中需要进行引用检查

    我有一个实现的类IEquatable