nullable的编译器处理模式,在C#规范里面有明确的说明。
参见C#规范6.1.5节:
6.1.5 null 文本转换从 null 文本到任何可以为 null 的类型存在隐式转换。这种转换产生可以为 null 的给定类型的 null 值(第 4.1.10 节)。
事实上关于nullable类型在编译器里面还有一大堆的特殊处理模式。
我想你的意思是为什么C#要定义这么多规范,而不是把这些逻辑交给用户自己来实现,因为C#是一种工程性的语言,其设计出来就是让程序员直接用来写大型软件的,而不是创造模式出来再用的。所以C#有大量的规范要求编译器的行为。