问题标签 [referenceequals]

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 投票
1 回答
51 浏览

java - 覆盖 .equals() 方法(== 在比较字符串时返回 true)!

第 1 行在使用 == 运算符比较两个字符串时返回 true。我认为 e1 和 e2 的“Jon”和“Smith”将有两个不同的引用(内存位置)。

什么概念在处理 e1 和 e2 的“Jon”和“Smith”以具有相同的引用?(字符串缓存??!还是只是巧合?)

0 投票
6 回答
128 浏览

c# - 使用比 ReferenceEquals 更具可读性的空检查扩展“对象”

我试图扩展“对象”以允许更可读的检查对象是否为空。

现在,object.ReferenceEquals 真正检查一个空对象,(它不会应用的罕见情况是因为操作符==可以被覆盖。该object.Equals(null)方法也可以被覆盖)。

但是object.ReferenceEquals(null, obj);它不太可读是吗?...所以,我想,为什么不写一个扩展方法来System.object提供该检查使用object.IsNull(obj);

我试过了:

我错过了什么?

0 投票
3 回答
1410 浏览

c# - 这个超载是什么意思?

有人可以解释一下这个超载是什么意思吗?

我从未见过 Object.ReferenceEquals 过载

0 投票
1 回答
59 浏览

java - Java:装箱和使用 ==

可以说我有类似的东西

c == d结果为真。这是否意味着对象 c 和 d 指向内存中的同一个对象?

任何人都可以在这里阐明吗?

我们在这里创建 2 个对象 c 和 d 吗?它们是不同的对象还是相同的对象?==告诉我它们是相同的对象。

我还在某处读到铸造不会创建新对象。这只是表示同一对象的一种方式。如果我尝试将对象转换为整数,这是有道理的。

但是在这种情况下,之前图片中没有对象(我们所拥有的只是图元)并且我们正在尝试在此处创建对象c,该d怎么办?

0 投票
3 回答
605 浏览

c# - C# 中的运算符 ==、Equal 方法和 Object.ReferenceEqual

今天,我正在阅读 == 运算符、Equal 函数和 Object.ReferenceEqual 方法。

  • 运算符 == 用于检查相等引用。
  • Equal Method - 它用于检查相等的值。
  • Object.ReferencEqual – 用于检查相等引用。

我创建了一个测试控制台应用程序。我有几个问题。如果你给我所有的答案,这对我会有帮助。

我在输出中有五行。

第 1 行 – 输出为真。

据我所知,我在这里进行铸造。所以我得到了 TRUE 作为 == 运算符检查参考。

第 2 行 – 输出为 False。

问题 1. 对象的相等函数校验值。在这里,我们有相同的价值,但我得到了 False。为什么?

第 3 行 – 输出为真。

问题 2. 我在这里进行铸造,所以我得到了 True。为什么?

第 4 行。输出为 False。

据我所知,这两个对象都是不同的类型。所以,我越来越错了。

第 5 行。输出为 False。

问题 3. 我在这里进行铸造,但我仍然得到 False。为什么?

问题 4. == 运算符和 Object.ReferenceEqual 有什么区别?

0 投票
2 回答
73 浏览

c# - 这种使用 ReferenceEquals 的方式是否正确

我正在做一些代码审查,我停止了以下构造。这是ReferenceEquals检查方法是否返回与作为参数或新参数传递的对象相同的正确方法吗?

0 投票
1 回答
125 浏览

c# - 当类型不同但兼容比较值时如何检查值类型的装箱对象的相等性

当我们装箱两种值类型(它们是不同的类型但兼容以比较值,例如:int 和 short)并尝试调用 Equals 方法时,即使值相同,也会给出 false。

情况1:

另一方面,当两个值类型相同时,Equals 返回实际值比较结果。

案例二:

我比较了这两种情况的反汇编代码,但它是相同的,我找不到任何区别。

  1. 如果装箱对象中的值类型不同,实际上调用的是哪个 Equals 方法?
  2. 当装箱对象内的两种值类型相同时,它如何调用该值类型的 Equals 方法?
0 投票
1 回答
95 浏览

c# - 为什么有时 2 个对象引用相同但并非总是如此

遵循最后一个答案:将平面集合转换为层次集合的递归方法?

我想使用相同的方法 CreateTree 但使用除层次结构之外的另一个对象:ItemNode:

以及Item的定义:

这里是带有 ItemNode 的 CreateTree 方法:

它不起作用,因为 parent 和 root 没有引用同一个对象(而在原始方法中,它确实如此)。我想这与我在 ItemNode 类中添加了一个 Item 属性有关。但我不知道如何解决它。

谢谢 !

0 投票
1 回答
80 浏览

c# - .equals() 和 == C# 的混淆?

所以我在文章中读过==检查对象引用是否相同 .equals()检查数据是否相同但是当我自己编写一些程序时我感到困惑。

我有一个班级人,我在构造函数中传递了 10,20 现在我创建了另一个对象 p1 和 p2

现在我对 p.equals(p2) 感到困惑,两者都有相同的数据 10,20 所以为什么是假的

0 投票
1 回答
48 浏览

c# - 比较具有相同类型的对象评估为假

我在 if 语句中有这段代码,结果为false,我不知道为什么

使用Equals,因为我打算通过引用进行比较

我试图把它们放在手表上,这是我的线索

点击查看

typeof(TResponse)似乎有一段MediatorResponse'1时间typeof(MediatorResponse)似乎MediatorResponse是这两个仍然是同一类型吗?

为什么视觉工作室将 1 放在另一个上?