c# - null 到底有什么值(value)?

标签 c# java language-agnostic null object

(我知道 null 是什么以及它的用途)

问题:好的,假设我们用任何语言引用一个对象。计算机在内存中留出一点 32 位(或其他大小,取决于计算机的设计)空间供该引用。该内存可以分配给表示对象在内存中的位置的值。但是当我将引用设置为 null 时,它到底有什么值(value)呢? (引用集中的各个位是什么)这些位是否刚刚清零?但这不也是内存中的一个位置吗?计算机如何判断引用包含 null 而不是对对象的引用?

我知道这不是一个“重要”的问题,但我很好奇它是如何工作的。

谢谢大家 :D

最佳答案

答案分为两部分:

  • 值为零(即值中的所有位均为零)
  • 零永远不会被视为有效地址。

第二点是为什么要回答您的问题“但那不也是内存中的一个位置吗?”是“否” - 这只是一个规则,即零不被视为有效的内存位置。尝试访问它会导致异常。

编辑: According to Wikipedia (所以它一定是真的 8-)“一些架构使用带符号的地址空间并使用最负值”。因此它不一定在所有架构上都为零,但无论它在给定架构上有什么值,该值都被视为无效内存位置。

关于c# - null 到底有什么值(value)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1278870/

相关文章:

language-agnostic - 准确的MIME类型检测需要多少个字节?

c# - 是否有可能在 WCF REST 4 中返回 HTML 作为响应格式之一

c# - 运行 Windows 服务以观察服务运行增长内存(泄漏)

c# - WP7 Silverlight Bing map - MapPolyline 不随 map 缩放或移动

java - Activity 恢复时 ExpandableListAdapter getChildrenCount 空指针异常

c# - 一个 "regex for words"(语义替换)——任何示例语法和库?

c# - 防止 COM 名称重整

java - 在 Tomcat 中部署 Spring Boot war

java - Spark根据列值设置连续计数器值

javascript - 通过 y 位置查找哪一行