问题标签 [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 回答
189 浏览

ocaml - 什么时候在 OCaml 中创建物理上不同的值?

我试图了解 OCaml 中的物理相等运算符 (Pervasives.(==)Pervasives.(!=)) 的含义。

语言手册说表达式""是“常量”,而不是“表达式”:

6.5 常数

常量::== ...字符串文字

但我找不到任何表示常量是单独/预评估或池化的措辞,并且 REPL 表示可变字符串值(谢天谢地)没有被池化。

19.3 OCaml 数据类型的表示”部分建议语言规范要求 bools、ints、chars、单位值、简单变体和空列表是无私的。

实现是否必须像上面那样才能成为符合 OCaml 的实现?

兼容的 OCaml 实现是否可以重写指针b以指向a何时a = b (* structurally *)为真,并且两者都是不可变类型的值(或有效的不可变值,如零长度字符串/数组),有时这样做是为了减少一代中可到达的较年轻值的数量GC?

0 投票
4 回答
575 浏览

hash - 基于物理身份的 Hashtbl.hash 替代方案

我正在尝试派生一个描述结构化值的 Graphviz 文件。这是出于诊断目的,所以我希望我的图表尽可能地反映内存中的实际结构。我正在使用以下内容将值映射到 Graphviz 顶点,以便在值具有两个或多个入站引用时可以重用顶点:

的文档Hashtbl.hash建议它适合在何时StateIdentity.equal = (=)和何时使用,StateIdentity.equal = (==)但我想确保哈希表访问尽可能接近 O(1),因此宁愿不Hashtbl.hash走一个(在这种情况下可能很大)对象每次查找的图表。

我知道 Ocaml 会移动引用,但是 Ocaml 中是否有用于引用标识的 O(1) 代理?

Ocaml中可变变量哈希表的答案表明不是。

我不愿意将序列号附加到状态,因为这是诊断代码,所以我所做的任何错误都有可能掩盖其他错误。

0 投票
4 回答
285 浏览

c# - 是否可以创建一个不等于任何其他字符串的引用的字符串?

.NET 似乎不遗余力地使值相等的字符串通过引用相等。

在 LINQPad 中,我尝试了以下方法,希望它能绕过内部字符串常量:

但这会返回true。但是,我想创建一个string可以可靠地区分于任何其他对象的string对象。

(用例是创建一个用于可选参数的哨兵值。我正在包装 WebForms' Page.Validate(),我想根据调用者是否给我可选的验证组参数来选择适当的重载。所以我希望能够检测调用者是否省略了该参数,或者他是否传递了一个恰好等于我的默认值的值。显然还有其他不那么神秘的方法来处理这个特定的用例,这个问题的目的更具学术性。),

0 投票
2 回答
530 浏览

c# - 为什么我要在 Equals 覆盖中执行 object.ReferenceEquals(null, this) ?

考虑一下我正在查看的以下代码:

这段代码的第一行引发了我的好奇心。无论何时this为 null,该方法都应返回 false。现在我很确定程序员打算用 来编写!object.ReferenceEquals(other, null)快捷方式null,但他坚持认为this可以为空。我坚持认为它不能(除非有人使用直接内存操作)。我们应该把它留在里面吗?

0 投票
3 回答
2420 浏览

c# - C# 运算符 ==、StringBuilder.Equals、Object.Equals 和 Object.ReferenceEquals 之间的区别

我有一个关于Object.Equals和的问题Equals(object)。我的示例代码如下:

输出是:

但就我所关心的Object.Equals(sb1, sb2)内部调用 而言sb1.Equals(sb2),为什么它会给出两种不同的结果呢?

0 投票
0 回答
310 浏览

c# - Mono 中 ReferenceEquals 字符串比较的问题

我在 Mono 中(在 unix 系统下)创建了一个 Uri 对象,这非常简单(就像在 VStudio/Windows 中一样):new Uri(" http://my.url_here.com/ ")。然后我正在创建另一个使用 Uri 的系统对象:HttpSelfHostConfiguration()。

在 HttpSelfHostConfiguration 的源代码中,接收到的 Uri 将使用以下 if 语句进行验证(在 Mono 源中检查):

并且“if”失败,因为“ReferenceEquals(baseAddress.Scheme,Uri.UriSchemeHttp)”返回false,意味着对于Mono(在Unix中运行)baseAddress.Scheme不等于Uri.UriSchemeHttp。

请注意,在 Mono(Unix) 中已确认调试:baseAddress.Scheme = "http" 和 Uri.UriSchemeHttp = "http"。

在 VStudio 下,这很完美。

谁能帮我理解 ReferenceEqual 在 Mono(Unix) 下是如何工作的,最重要的是,我怎样才能在 Mono 中创建一个有效的 Uri 来通过上面的 if 语句的验证?

多谢

0 投票
6 回答
4552 浏览

java - How use of == operator brings in performance improvements compared to equals?

In Effective JAVA by Joshua Bloch, when I was reading about static factory methods , there was a statement as follows

The ability of static factory methods to return the same object from repeated invocations allows classes to maintain strict control over what instances exist at any time. Classes that do this are said to be instance-controlled. There are several reasons to write instance-controlled classes. Instance control allows a class to guarantee that it is a singleton (Item 3) or noninstantiable (Item 4). Also, it allows an immutable class (Item 15) to make the guarantee that no two equal instances exist: a.equals(b) if and only if a==b. If a class makes this guarantee, then its cli- ents can use the == operator instead of the equals(Object) method, which may result in improved performance. Enum types (Item 30) provide this guarantee.

To investigate how == operator brings in performance improvements , I got to look at String.java

I saw this snippet

By performance improvement what does he mean here ? how it brings performance improvement .

Does he mean to say the following

If every class can assure that a.equals(b) if and only if a==b , it means it brings in an indirect requirement that there cannot be objects referring to 2 different memory spaces and still hold the same data , which is memory wastage . If they hold same data they are one and the same object .That is they point to same memory location.

Am I right in this inference ?

If I am wrong can you guide me in understanding this ?

0 投票
3 回答
103 浏览

c# - 为什么 string interned 但有不同的引用?

我只是不明白为什么 s3 实习,但这ReferenceEquals是假的。

他们在实习生池中有两个副本吗?

提前致谢。

0 投票
3 回答
610 浏览

java - 使用引用相等的集合

在Java中是否可以创建HashMap使用引用相等(即==)而不是equals()方法?

0 投票
1 回答
1970 浏览

java - IdentityHashMap 和 WeakHashMap 的组合

我需要一个共享和(引用相等而不是键上的弱引用)的Map属性的实现。IdentityHashMapWeakHashMapequals()

你推荐什么实现(它必须在 Android 上工作)?