问题标签 [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 投票
2 回答
67 浏览

javascript - 如何在Javascript中对字符串进行真实身份相等性检查

我看过很多关于 identity equal operator的解释===,但似乎它们并不像我们对其他语言(如 Java)中身份相等的理解那样准确。

似乎对于基本类型(例如数字、字符串),===返回 true 表示两个变量是否具有相同的类型和值。但不一定相同的身份(对同一对象的引用)。但对于数组和地图,它确实如此。以下是一些让我感到困惑的例子:

有人可以确认我的理解是正确的吗?Javascript中的字符串也有真正的身份相等性检查。即s1 === s2应该false在上面的例子中返回?

0 投票
1 回答
74 浏览

c# - 为什么 ReferenceEquals 仍然与值类型一起使用?

有一个很好的解释为什么object.ReferenceEquals(this, obj)不能用于值类型:

使用 ReferenceEquals 比较值时,如果 objA 和 objB 是值类型,则在将它们传递给 ReferenceEquals 方法之前将它们装箱。这意味着即使 objA 和 objB 都表示值类型的同一实例,ReferenceEquals 方法仍然返回 false

但是,我发现类似于以下代码段的代码:

这是错误的还是存在ReferenceEquals对值类型,尤其是结构有用(即评估为真)的边缘情况?

0 投票
1 回答
53 浏览

c# - C# 将对象存储到字典中的问题

这似乎很简单,但我不确定我做错了什么......

我写了下面的类,我在一个Dictionary<string, ClassName>对象中进一步使用它,作为它的.Value

当我运行应用程序时,我创建了一个Dictionary<string, StorageList>并添加了一些元素:

当打印到控制台“idOne”或“idTwo”时,我希望看到“idOne”的 1 和 2,以及“idTwo”的 3 和 4。但是,我看到 'idOne' 和 'idTwo' 的 1、2、3 和 4...

对象不同,所以我不太明白为什么会这样。

我很感激这方面的一些帮助。谢谢!