问题标签 [equals-operator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
196 浏览

c# - 使用接口而不是实际类型时如何覆盖 operator ==?

我有一些这样的代码:

我应该如何实现运算符 == 以便在变量是接口 IMyClass 时调用它?

0 投票
5 回答
3185 浏览

c# - 如何覆盖基类的 == 运算符,以便调用覆盖

使用如下代码

我正在尝试确保调用派生运算符 (TaskA.==)。

在这里尝试该技术时出现编译错误。

如果运算符不是静态的,我想我可以让它正常工作,因为我可以覆盖基类的运算符。那可能吗?

一旦我知道了,我将如何比较基本属性(我认为转换为任务类型 [(Task)t1 == (Task)t2] 不起作用)?

0 投票
7 回答
196075 浏览

java - Java:整数等于 vs. ==

从 Java 1.5 开始,您几乎可以在许多情况下Integer与之互换。int

然而,我发现我的代码中有一个潜在的缺陷,这让我有点吃惊。

以下代码:

当值相等时,似乎错误地设置了不匹配,尽管我无法确定在什么情况下。我在 Eclipse 中设置了一个断点,发现Integer两个值都是 137,我检查了布尔表达式,它说它是假的,但是当我越过它时,它把不匹配设置为真。

将条件更改为:

解决了这个问题。

任何人都可以解释为什么会这样吗?到目前为止,我只在我自己的 PC 上的本地主机上看到了这种行为。在这种特殊情况下,代码成功通过了大约 20 次比较,但在 2 次比较失败。该问题始终可以重现。

如果这是一个普遍存在的问题,它应该会导致我们的其他环境(开发和测试)出现错误,但到目前为止,在执行此代码片段的数百次测试之后,还没有人报告这个问题。

==使用比较两个Integer值仍然不合法吗?

除了下面所有的好答案之外,下面的 stackoverflow 链接还有很多额外的信息。它实际上会回答我原来的问题,但是因为我没有在我的问题中提到自动装箱,所以它没有出现在选定的建议中:

为什么编译器/JVM 不能让自动装箱“正常工作”?

0 投票
3 回答
565 浏览

c# - 在结构中,通过 Equals 实现 operator== 是否有效,但不能覆盖 Equals 和 GetHashCode?

这是有效的吗?

(我知道它的效率有点低,因为 Object.Equals 默认使用值类型的反射。但它有效吗?)

我问是因为 ReSharper 突出显示它并警告我MyStruct defines operator '==' or operator '!=' but does not provide 'Object.Equals(object o)' and 'Object.GetHashCode()'

0 投票
2 回答
608 浏览

c# - Object.Equals 是虚拟的,但是 Object.operator== 在 C# 中不使用它?

我在 C# 中遇到了一个我不太了解的奇怪“不对称”。请参阅以下代码:

对于所有 .NET 专家来说,这可能是显而易见的,但第二个断言失败了。

在 Java 中,我了解到 == 是这里称为 Object.ReferenceEquals 的同义词。在 C# 中,我认为 Object.operator== 使用 Object.Equals,它是虚拟的,因此在 System.String 类中被覆盖。

有人可以解释一下,为什么第二个断言在 C# 中失败?我的哪些假设是错误的?

0 投票
2 回答
1013 浏览

iphone - 你应该使用'isEqual'还是'=='?

我在这里看到了几个关于 SO 的问题,其中包括函数isEqual:而不是标准的分析器==

到目前为止,我只学会了使用==,所以我想知道什么更好用,各有什么优缺点?你应该什么时候使用它们?

谢谢你。

0 投票
3 回答
2718 浏览

perl - Perl if 等号

我需要检测文件中的第一个字符是否为等号 ( =) 并显示行号。我应该如何写if声明?

0 投票
3 回答
106284 浏览

c# - 何时复制 C# 值/对象,何时复制其引用?

在复制要引用的对象或引用要复制的对象的位置时,我一遍又一遍地遇到相同的问题。当我使用 = 运算符时会发生这种情况。

例如,如果我将对象发送到另一种形式,即:

...然后修改表单中的对象,原始对象不会被修改。就好像对象被复制而不被引用一样。然而,当我这样做时:

...然后修改anotherObjectmyObject也被修改。

最严重的情况是当我尝试克隆我定义的对象之一时:

当我这样做...

...obj1被引用以及对更改的任何obj2修改obj1

除了上面的克隆方法之外,系统对象(例如int, double, string等)似乎总是被复制。

我的问题是,不考虑ref函数中关键字的使用,何时复制对象以及何时在每种情况下引用对象(即传递给函数时,设置为其他对象时(如上面的前两个示例),当复制第三个示例等成员变量时)?

0 投票
5 回答
476 浏览

php - 所有 PHP 相等比较都是对称的吗?

总是$a == $b等价于$b == $a?

我认为在 JavaScript 中,由于强制转换,有一些奇怪的情况是不正确的。

我认为ide是正确的。我再问一个问题

0 投票
3 回答
28257 浏览

c# - 在 linq 中使用 equals 关键字

可能重复:
Lambda 表达式:== vs. .Equals()

你好,

我经常使用关键字 Equals 来比较变量和其他内容。

当数据区域为 NULL 时在运行时返回错误

我不得不使用代码

摆脱错误。

任何想法为什么会引发错误?

谢谢。