有空值的情况很有用

时间:2014-01-31 02:31:49

标签: null

有一个真正的驱动器可以消除编程中的null,并且有许多null在语言中很糟糕的例子。 null的好用途及其对编程的一些好处。

2 个答案:

答案 0 :(得分:1)

在支持null的所有计算机语言中,它表示“未知”(或“未分配” - 类似)。区分“未知”和特定值可能很有用。这尤其适用于类型变量的所有可能值都是其含义的可能值。如果变量的含义范围有限,则可以为“未知”保留超出此范围的值。

例如在java中:

int age = -1; // people can't have a negative age, so safe to use -1 as unknown
Integer hashCode = null; // hash can be any integer, so need to use null

允许null的缺点是你需要处理的许多语言:

再次在java中:

boolean hasSameHash = hashCode != null && hashCode.equals(other.hashCode);

答案 1 :(得分:1)

拥有null就像拥有一个未使用的变量。当然有它很棒,但它不是很有用。您可以分配一个值,但之后它不会被闲置。如果处理它,拥有null并不是一件坏事。所以它并不是很糟糕,但它并没有用。

什么时候好?好吧,我认为没有设置值的知识是有用的,因此很好。

有些人使用null来表示另一个值。例如null表示与零或非零数字不同的内容。就个人而言,我尽量避免分配null。对我来说,null的唯一含义是未使用/未分配。它没有任何进一步的宇宙目的,因此不能好/坏。只有用/无用。或者,如果未处理,可能会导致错误,当然,如果出现意外,错误也会很糟糕。

在我看来,这里真正的问题是为什么我们根本就有空值。但这有点像问你为什么有一个空篮子。你必须填写它才有用。但是,在你首先制作(或获得)篮子之前,你无法填补它。所以我想我们只会有空...直到我们分配一个值。要处理它。

您可以通过指定默认值来避免空值。这对字符串或数字很有用,尽管有时您可能想知道该值是否已被主动设置。