language-agnostic - 比较对象时 null == null 是否应该为真?

标签 language-agnostic oop

我很好奇大家是怎么想的。在 SQL 中(至少在 oracle 中)NULL 在概念上转换为“我不知道值”,所以 NULL = NULL 是假的。 (也许它实际上导致一个 NULL,然后被强制转换为 false 或类似的东西......)

这对我来说很有意义,但在大多数 OO 语言中,null 意味着“没有引用”,所以 null==null 应该是真的。这是在 C# 中通常的处理方式,例如在覆盖 Equals 时。

另一方面,在面向对象的语言中,null 仍然经常用来表示“我不知道”,并且将 null==null 实现为 false 可能会导致代码对某些领域更有意义。

告诉我你的想法。

最佳答案

对于通用编程,null == null 应该返回 true。

我数不清我遇到的次数

if( obj != null )
{
   //call methods on obj
}

模式,而且它通常似乎是不可避免的。如果 null == null 的计算结果为 false,则此模式将分崩离析,并且没有什么好方法可以毫无异常(exception)地处理这种情况。

关于language-agnostic - 比较对象时 null == null 是否应该为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1664934/

相关文章:

Python 泛型 : how to create object of an appropriate class?

design-patterns - 在 MVP 架构中存储状态的位置

language-agnostic - 随机森林中什么是袋外错误?

java - 避免使用instanceof模式

Java继承覆盖实例变量

javascript - 从 JavaScript 中的私有(private)函数访问公共(public)函数

language-agnostic - 规划问题的递归解决方案的最佳方法是什么?

algorithm - 寻找多个平面的平均相交线

database - 每 10 秒保存数千个对象的状态

javascript - 向函数添加自定义属性