Int32.Equals 与 '==' 运算符

2024-01-01

我环顾四周,但似乎没有人问过这个问题,所以就这样吧。

我正在开发一个自定义类,它将具有IEquatable界面,因此我正在制作自己的Equals方法。它看起来是这样的:

public bool Equals(QueryFilter qfilter)
    {
        if (qfilter == null)
        {
            return false;
        }
        return ((this.Value.Equals(qfilter.Value)) && 
            (this.Name.Equals(qfilter.Name)) &&
            (this.Order == qfilter.Order));
    }

其中 Value、Name 和 Order 是 QueryFilter 类的字段。值和名称是strings,但订单是一个int,我想知道是否使用==运营商很好,或者我是否应该去Int32.Equals方法,以“匹配”其他字段如何进行比较?我查了MSDN,但没有详细说明,只是说它超载了,但我不确定在这种情况下这意味着什么。那==会一直在工作吗?

那么总结来说,哪一个更好呢?Int32.Equals or ==?我应该什么时候使用每一种?


是的,使用==运算符绝对没问题,只要编译时类型Order is int.

如果编译时类型是object例如,那么你会处理boxed int值并将这些框与引用相等进行比较,这不是您所追求的。但只要编译器知道它们是int价值观,没问题。

请注意,这是also很好做这个Name and Value- 再次假设编译时这些属性的类型是string(因为编译器使用由string。那么你可以利用这样的事实&&是短路的,去掉不必要的括号,剩下:

public  bool Equals(QueryFilter other)
{
    return other != null &&
           this.Value == other.Value &&
           this.Name == other.Name &&
           this.Order == other.Order;
}

...我当然更愿意看到。

这也可以处理以下情况:Value or Name is null,以一种明显的方式(空引用彼此相等,并且不等于任何非空引用)。您现有的代码会抛出一个NullReferenceException如果达到this.Value.Equals or this.Name.Equals对于空属性值。 (您很可能确保永远不会出现这种情况,但值得注意。)

您还应该确保您的哈希码与相等性一致,并覆盖Equals(object) too.

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

Int32.Equals 与 '==' 运算符 的相关文章

  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template

随机推荐

  • Angular - ui-router 获取之前的状态

    有没有办法获取当前状态的先前状态 例如 我想知道当前状态 B 之前的前一个状态是什么 其中前一个状态是状态 A 我无法在 ui router github 文档页面中找到它 在移动到新状态之前 我使用解析来保存当前状态数据 angular
  • 我的 CREATE View 查询中不需要锁定吗

    我正在 MS SQL Server 上创建一个视图 我对 MS SQL 没有太多接触 并且不太熟悉 NO LOCK 提示 我明白它的作用 但我不知道我是否需要在我的情况下使用它 有人问我是否应该包括它 但我不知道 我是否需要在用于创建视图的
  • 将 Spark DataFrame 列转换为 Python 列表

    我处理一个有两列的数据框 mvv 和 count mvv count 1 5 2 9 3 3 4 1 我想获得两个包含 mvv 值和计数值的列表 就像是 mvv 1 2 3 4 count 5 9 3 1 所以 我尝试了以下代码 第一行应该
  • Ironpython调用numpy问题

    铁蟒2 6 蟒蛇2 6 5 麻木 科学Py import sys sys path append r D Python26 dll sys path append r D Python26 Lib sys path append r D P
  • 为什么 Maven 报告“校验和验证失败,存储库中没有可用的校验和”?

    我正在尝试使用此处描述的 3 个步骤创建自定义 Maven 存储库 http www javaworld com community node 3968 http www javaworld com community node 3968
  • scikit-learn 中奇怪的 SVM 预测性能 (SVMLIB)

    我在 10000x1000 的大型数据集 10000 个对象 1000 个特征 上使用 scikit learn 的 SVC 我已经在其他来源中看到 SVMLIB 的扩展范围不能超过约 10000 个对象 我确实观察到了这一点 traini
  • 在 php 中组合重叠字符串序列的内置函数?

    PHP 中是否有内置函数可以将 2 个字符串合并为 1 个 Example string1 abcde string2 cdefg 合并可得 abcdefg 如果确切的重叠序列和位置已知 则可以编写代码来合并它们 我发现 substr re
  • 何时使用 TaskCreationOptions.LongRunning?

    我想知道这个问题有一段时间了 但从未真正找到答案 我知道这是任务调度程序在其中运行任务的提示 并且任务调度程序可以 或现在将 决定为该任务实例化一个非线程池线程 我不知道 令人惊讶的是在互联网上找不到任何地方 是何时将任务指定为长时间运行的
  • 如何在 MySQL 8 中永久禁用列统计?

    Since MySQL 8 the column statistics默认情况下启用标志 所以如果你尝试转储一些表MySQL工作台8 0 12 您会收到以下错误消息 14 50 22 转储数据库 表名 运行 mysqldump exe de
  • 如何通过输入流手动向 cmd.exe 进程提供命令?

    这个问题听起来有点晦涩难懂 这是一个稍长的版本 我需要让主循环等待用户输入 并且还需要运行一个进程并等待来自用户输入要发送到的流的输入 全文 我正在构建一个 Cmd 模拟器 起初一切看起来都很好 用户输入命令 它会回显到输出区域 进行处理
  • 服务器端和胖客户端 Web 应用程序的文件夹结构

    目前 我使用 Node js 作为后端 使用 extjs 或骨干作为客户端 现在我对文件夹结构完全感到困惑 Using express我的文件夹结构如下 appname controllers models appmodel js publ
  • laravel:如何获取与数据透视表中另一列相关的列(3列数据透视表)

    我不知道如何表达这个问题 但我需要执行以下操作 我有一个包含三列的数据透视表user id account id role id 所以在我的数据库中如果我有这些行account role user pivot account id user
  • oracle错误:没有足够的值

    我有一个表donor master create table donor master donor id number 10 primary key not null dob date not null age number 3 not n
  • 绑定在 WPF Datagrid 第二行标题中不起作用

    My Xaml
  • 禁用特征中的 FactoryGirl 关联

    在 Rails 应用程序中 我使用 FactoryGirl 定义一个通用工厂以及几个更具体的特征 一般情况和除一个特征之外的所有特征都具有特定的关联 但我想定义一个不创建 构建该关联的特征 我可以使用after设置关联的回调id to ni
  • 将因子转换为 R 中的日期/时间

    这是我的数据框中包含的信息 minuteofday factor w 89501 levels 2013 06 01 08 07 00 dDdt num 7 8564 2 318 minutes POSIXlt format NA NA N
  • 在 C# 中序列化匿名委托

    我试图确定使用以下序列化代理来启用匿名函数 委托 lambda 的序列化可能会导致哪些问题 see http msdn microsoft com msdnmag issues 02 09 net S3 class NonSerializa
  • Android TextField:以编程方式设置焦点+软输入

    在我看来 我有一个搜索 EditText 我想以编程方式触发该字段上的单击事件的行为 即将焦点集中到文本字段并在必要时显示软键盘 如果没有可用的硬键盘 I tried field requestFocus 该字段实际上获得焦点 但不显示软键
  • html 元素 (div) 的完整高度,包括边框、内边距和边距?

    我需要 div 的完整高度 我目前正在使用 document getElementById measureTool offsetHeight offsetHeight 返回元素的高度 包括边框和填充 如果有 但不包括边距 但是 div 内的
  • Int32.Equals 与 '==' 运算符

    我环顾四周 但似乎没有人问过这个问题 所以就这样吧 我正在开发一个自定义类 它将具有IEquatable界面 因此我正在制作自己的Equals方法 它看起来是这样的 public bool Equals QueryFilter qfilte