Tag: 相等

为什么方法没有参考平等?

我有一个错误,我使用的方法是相互依赖的。 事实certificate情况并非如此: >>> class What(object): def meth(self): pass >>> What.meth is What.meth False >>> inst = What() >>> inst.meth is inst.meth False 为什么是这样? 它适用于常规function: >>> def func(): pass >>> func is func True

LINQselect不同于匿名types

所以我有一个对象的集合。 确切的types并不重要。 从中我想提取一对特定属性的所有唯一对,因此: myObjectCollection.Select(item=>new { Alpha = item.propOne, Bravo = item.propTwo } ).Distinct(); 所以我的问题是:在这种情况下,将不同的使用默认对象等于(这将是无用的,因为每个对象是新的),或可以告诉做一个不同的等于(在这种情况下,相等值的阿尔法和布拉沃=>等于实例)? 有什么办法可以达到这个效果吗?

什么是比较两个引用types实例的“最佳实践”?

我最近遇到了这个问题,直到现在我一直在高兴地重写等号运算符( == )和/或Equals方法,以便查看两个引用types实际上是否包含相同的数据 (即两个不同的实例看起来相同)。 自从我进行了更多的自动化testing之后,我一直在使用这个function(比较参考数据和预期数据)。 在查看MSDN中的一些编码标准指南时,我遇到了一篇build议反对的文章 。 现在我明白为什么这篇文章是这样说的(因为它们不是同一个实例 ),但是它不回答这个问题: 什么是比较两种参考types的最佳方法? 我们应该实现IComparable ? (我也曾经提到这只应该保留给价值types)。 有一些我不知道的界面吗? 我们应该推出自己的?! 非常感谢^ _ ^ 更新 看起来我错误地阅读了一些文档(这是一个漫长的一天),压倒一切的Equals可能是要走的路。 如果您正在实现引用types,则应考虑在引用types上覆盖Equals方法(如果types看起来像基本types,如Point,String,BigNumber等)。 大多数引用types不应该重载相等运算符,即使它们覆盖了Equals 。 但是,如果要实现旨在具有值语义的引用types(如复数types),则应该覆盖相等运算符。

在Python中是False == 0和True == 1的实现细节,还是由语言保证的?

在Python中保证False == 0和True == 1吗? 举例来说,不pipePython的版本(包括现有的和未来的版本),下面的代码总能产生相同的结果吗? 0 == False # True 1 == True # True ['zero', 'one'][False] # is 'zero' 任何参考官方文件将非常感谢! 编辑 :正如在许多答案中指出的, bool从intinheritance。 因此,这个问题可以被重写为:“文档是否正式说过程序员可以依赖于从整数inheritance的布尔值,值为0和1 ?”。 这个问题是相关的编写健壮的代码,不会因为实现细节而失败!

Python中的string比较:is vs. ==

我注意到我正在写的一个Python脚本是松鼠行事,并追溯到一个无限循环,其中循环条件是while line is not '' 。 在debugging器中运行它,事实certificate该行实际上是'' 。 当我把它改成!=''而is not '' ,它工作正常。 另外,通常认为只要使用'=='默认情况下更好,即使比较int或布尔值? 我一直喜欢用'是',因为我觉得它更美观和pythonic(这就是我陷入这个陷阱…),但我想知道是否只是为了当你关心find两个具有相同ID的对象。

等于Java中的Arrays.equals

在Java中比较数组时,以下两个语句之间是否有区别? array1.equals(array2); Arrays.equals(array1, array2); 如果是的话,他们是什么?

如何比较Java中的string?

我一直在使用==运算符来比较我所有的string。 但是,我遇到了一个bug,把其中一个改成了.equals() ,然后修复了这个bug。 是==不好? 什么时候该用,不该用? 有什么不同?