问题标签 [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.
c# - 使用接口而不是实际类型时如何覆盖 operator ==?
我有一些这样的代码:
我应该如何实现运算符 == 以便在变量是接口 IMyClass 时调用它?
c# - 如何覆盖基类的 == 运算符,以便调用覆盖
使用如下代码
我正在尝试确保调用派生运算符 (TaskA.==)。
在这里尝试该技术时出现编译错误。
如果运算符不是静态的,我想我可以让它正常工作,因为我可以覆盖基类的运算符。那可能吗?
一旦我知道了,我将如何比较基本属性(我认为转换为任务类型 [(Task)t1 == (Task)t2] 不起作用)?
java - Java:整数等于 vs. ==
从 Java 1.5 开始,您几乎可以在许多情况下Integer
与之互换。int
然而,我发现我的代码中有一个潜在的缺陷,这让我有点吃惊。
以下代码:
当值相等时,似乎错误地设置了不匹配,尽管我无法确定在什么情况下。我在 Eclipse 中设置了一个断点,发现Integer
两个值都是 137,我检查了布尔表达式,它说它是假的,但是当我越过它时,它把不匹配设置为真。
将条件更改为:
解决了这个问题。
任何人都可以解释为什么会这样吗?到目前为止,我只在我自己的 PC 上的本地主机上看到了这种行为。在这种特殊情况下,代码成功通过了大约 20 次比较,但在 2 次比较失败。该问题始终可以重现。
如果这是一个普遍存在的问题,它应该会导致我们的其他环境(开发和测试)出现错误,但到目前为止,在执行此代码片段的数百次测试之后,还没有人报告这个问题。
==
使用比较两个Integer
值仍然不合法吗?
除了下面所有的好答案之外,下面的 stackoverflow 链接还有很多额外的信息。它实际上会回答我原来的问题,但是因为我没有在我的问题中提到自动装箱,所以它没有出现在选定的建议中:
c# - 在结构中,通过 Equals 实现 operator== 是否有效,但不能覆盖 Equals 和 GetHashCode?
这是有效的吗?
(我知道它的效率有点低,因为 Object.Equals 默认使用值类型的反射。但它有效吗?)
我问是因为 ReSharper 突出显示它并警告我MyStruct defines operator '==' or operator '!=' but does not provide 'Object.Equals(object o)' and 'Object.GetHashCode()'
。
c# - Object.Equals 是虚拟的,但是 Object.operator== 在 C# 中不使用它?
我在 C# 中遇到了一个我不太了解的奇怪“不对称”。请参阅以下代码:
对于所有 .NET 专家来说,这可能是显而易见的,但第二个断言失败了。
在 Java 中,我了解到 == 是这里称为 Object.ReferenceEquals 的同义词。在 C# 中,我认为 Object.operator== 使用 Object.Equals,它是虚拟的,因此在 System.String 类中被覆盖。
有人可以解释一下,为什么第二个断言在 C# 中失败?我的哪些假设是错误的?
iphone - 你应该使用'isEqual'还是'=='?
我在这里看到了几个关于 SO 的问题,其中包括函数isEqual:
而不是标准的分析器==
。
到目前为止,我只学会了使用==
,所以我想知道什么更好用,各有什么优缺点?你应该什么时候使用它们?
谢谢你。
perl - Perl if 等号
我需要检测文件中的第一个字符是否为等号 ( =
) 并显示行号。我应该如何写if
声明?
c# - 何时复制 C# 值/对象,何时复制其引用?
在复制要引用的对象或引用要复制的对象的位置时,我一遍又一遍地遇到相同的问题。当我使用 = 运算符时会发生这种情况。
例如,如果我将对象发送到另一种形式,即:
...然后修改表单中的对象,原始对象不会被修改。就好像对象被复制而不被引用一样。然而,当我这样做时:
...然后修改anotherObject
,myObject
也被修改。
最严重的情况是当我尝试克隆我定义的对象之一时:
当我这样做...
...obj1
被引用以及对更改的任何obj2
修改obj1
。
除了上面的克隆方法之外,系统对象(例如int, double, string
等)似乎总是被复制。
我的问题是,不考虑ref
函数中关键字的使用,何时复制对象以及何时在每种情况下引用对象(即传递给函数时,设置为其他对象时(如上面的前两个示例),当复制第三个示例等成员变量时)?
c# - 在 linq 中使用 equals 关键字
你好,
我经常使用关键字 Equals 来比较变量和其他内容。
但
当数据区域为 NULL 时在运行时返回错误
我不得不使用代码
摆脱错误。
任何想法为什么会引发错误?
谢谢。