我想知道为什么原语不能为空。
今天我读this
所以我知道有可空基元,例如C#中的int?
或Java中的Integer
,但是为什么int或bool等不是直接可空的呢?
这个问题不是针对任何编程语言的,但是编程语言中为什么不允许原语为null会有区别吗?
最佳答案
我尝试用C++来解释它:
在C++中,将整数boolean直接分配给内存,因此,如果您创建整数变量,则该整数变量将仅使用四个字节作为值。如果要创建可为空的整数变量,则必须创建指向存储该值的内存的指针,因此,如果指针为null(0x0),则它不指向任何内容。如果不为null,则指向整数的实数值。
如果要加两个整数,则可以用一个汇编程序指令来完成,因为这些值可以直接传递给处理器。
可以将其传输到C#/Java的字节码。这些原语可以由C#/Java-Virtual Machine直接使用。所有其他变量不能直接使用,它们必须由编译器“取消引用”。
关于java - 为什么原语不能为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33121616/