在c#值类型或引用类型中为null

zin*_*ing 7 c# null

本来我有这样的印象,NULL是引用类型,因为它被赋值给引用,然后遇到这个概念称为可空值类型,这使得我的理论处于尴尬的境地,那么地球上的NULL值类型的引用类型呢?

Eri*_*ert 16

在这一点上,C#规范是明确的:null关键字表示没有类型的表达式.它既不是引用类型,也不是值类型,也不是指针类型.但是,该表达式可以转换为所有这些类型.不要求编译器将所有表达式分类为具有类型,实际上并非如此.

现在,您可以在运行时询问空引用的类型是什么,可空值类型的空值的类型是什么,以及空指针的类型是什么.答案是:

  • null引用没有类型.如果你有一个可以装巧克力的盒子,那么问这个空盒子里的巧克力是什么牌子是毫无意义的." 缺少的巧克力没有品牌; null引用没有类型.

  • 类似地,空指针的类型也不是任何东西; 空指针值不指向任何内容.如果你有一张地址为1600宾夕法尼亚大道的纸,你可以问"这个地址的房子颜色是什么",并得到答案:白色.如果你有一张白纸,询问那个地址的房子颜色是什么,不能得到任何有用的答案.

  • 可空值类型的空值是可空值类型的值.


Jas*_*n P 9

null 不是一种类型.

来自msdn:

null关键字是表示空引用的文字,不引用任何对象.

可空类型是Nullable<T>结构的实例," 表示可以赋值为null的值类型 ".