问题标签 [equals]
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.
ruby-on-rails - Ruby on Rails:作为参数的“等于”符号是什么意思?
我一直在使用的一些开源将以下行作为函数声明:
def parse_query(query=nil, options={}, models=nil)
“等号”符号对语句有什么影响?它只是使参数可选吗?
c# - 如何在 C# 中快速检查两个数据传输对象是否具有相同的属性?
我有这些数据传输对象:
我不想写
有没有更快的方法来测试两个只有属性的对象是否具有相同的值(不需要一行代码或每个属性一个逻辑表达式?)
切换到结构不是一种选择。
java - Java与两个字符串的==比较是假的?
字符串部分是 String[6]:
但是当我比较parts[0]
时"231"
:
上面的结果是假的,
我很困惑,所以有人能告诉我为什么吗?
c# - 我应该如何实现 Object.GetHashCode() 来实现复杂的相等性?
基本上,到目前为止,我有以下内容:
所以,问题是这样的:我有一个非必填字段Guid
,它是一个唯一标识符。如果没有设置,那么我需要尝试根据不太准确的指标来确定相等性,以尝试确定两个对象是否相等。这工作正常,但它使GetHashCode()
混乱......我应该怎么做?一个天真的实现是这样的:
但是这两种类型的哈希冲突的可能性有多大?当然,我不希望它是1 in 2 ** 32
。这是一个坏主意,如果是这样,我应该怎么做?
java - 当 "" == s 为假但 "".equals(s) 为真时
编辑 感谢您的及时回复。请看看真正的问题是什么。这次我把它变得大胆了。
我确实理解 == 和 .equals 之间的区别。所以,这不是我的问题(我实际上为此添加了一些上下文)
我正在对空字符串执行以下验证:
过去从数据库中获取值或从另一个节点反序列化对象时,此测试失败,因为两个字符串实例确实是不同的对象引用,尽管它们包含相同的数据。
所以解决这些情况的方法是
我很好。这很清楚。
今天再次发生这种情况,但让我感到困惑,因为这次应用程序是一个非常小的独立应用程序,根本不使用网络,所以没有从数据库中获取新字符串,也没有从另一个节点反序列化。
所以问题是:
其他情况下:
和
对于本地独立应用程序?
我很确定代码中没有使用new String() 。
字符串引用可能是“”的唯一方法是因为它是直接在代码中分配的“”(或者这就是我的想法),例如:
不知何故(在阅读了更多代码之后,我有了一个线索)创建了两个不同的空字符串对象引用,我想知道如何
jjnguys 回答中的更多内容:
字节!
编辑:结论
我找到了原因。
在 jjnguy 建议之后,我能够以不同的眼光看待代码。
有罪的方法:StringBuilder.toString()
分配并初始化一个新的 String 对象以包含该对象当前表示的字符序列。
嗬!...
谜团已揭开。
该代码使用 StringBuilder 来处理不断增长的字符串。事实证明,在某些时候有人这样做了:
并使用
ps 我最近是不是看太多 CodingHorror 了?或者为什么我觉得有必要在这里添加一些有趣的动物图片?
c# - Linq:连接中 == 和 equals 有什么区别?
我一直想知道为什么equals
linq 连接中有一个关键字而不是使用 == 运算符。
代替
[编辑]改写了问题并修改了示例。
c# - 如何覆盖特定 NHibernate 类的等于
我正在努力弄清楚我应该如何覆盖 equals 并为我正在使用 NHibernate 编写的类获取哈希码。
基本业务场景是用户不能在 90 天内重复使用相同的密码。
所以我有一个“用户”,它有很多“历史密码”......用户类很简单,因为我只是在等号中使用登录名。下面是我的 HistoricalPassword 类。
我会从商业角度说 User 和 ChangeDate 的组合会给我平等。但是......在 equals 方法中引用用户似乎不正确(因为一件事会导致延迟加载发生)......而且从我使用 HistoricalPasswordId 的 PK 阅读的内容来看,这是一个禁忌也是。
任何人都可以就如何为此覆盖 equals 提供一些建议吗?
编辑 ::: 我想我问这个问题的方式可能有点误导。对于如何执行确保密码不被重用的业务规则,我并不感到困惑……也不知道我如何知道两个密码是否相等或是否安全。我真正想知道的是与 NHibernate 相关的实体级别,我将如何覆盖该对象的 Equals,以便 NHibenate 不会在会话和/或缓存中出现欺骗。根据 NHibernate 文档(https://www.hibernate.org/hib_docs/nhibernate/html/persistent-classes.html),我应该使用业务密钥相等来覆盖equals。在这种情况下,我只是不确定在比较中使用 User 的引用对象是否是一个好主意。
sql - MYSQL 中的单等号
我想知道为什么 MYSQL 在条件语句中使用单个等号而不是更典型的两个等号。这有技术/历史原因吗?谢谢。
.net - 当空间大于 32 位时,如何实现 GetHashCode 兼容的 Equals 方法?
在 .NET 中,您需要 Equals(object) 和 GetHashCode() 兼容。但有时你不能:
因为数据密度大于 32 位,并且 GetHashCode 返回一个 Int32,所以您将有 3 个解决方案(假设正确实现了 GetHashCode):
/li>避免代码重复因为不正确而被丢弃与 GetHashCode() 分开实现 Equals
/li>实现精度更高的GetHashCode64,覆盖的GetHashCode(32位)会返回(int)GetHashCode64(),Equals会返回this.GetHashCode64() == other.GetHashCode64()
你会实施哪一个?
第一个解决方案不精确,但更清洁。第二个选项看起来很干净,但是当类具有更多属性时会变得非常复杂。第三种选择是妥协。