null是否也在C#中继承了Object?
null本身定义在哪里?
答案 0 :(得分:10)
null是否也在C#中继承了Object?
与其他一些系统不同,null
不是根据类或实例定义的。相反,它表示任何实例的缺席,并且它没有类型。它被隐式转换为适合上下文的任何引用类型。最宽的转换(即无法推断其他转换时)是object
。但是,null
通常不是object
类型。
答案 1 :(得分:6)
null
不是对象 - 它是一个语言关键字,表示缺少对象引用。
答案 2 :(得分:3)
null本身定义在哪里?
null是一个关键字。 null不是一种类型。
有两种变量,每种变量都有自己的一系列可空性规则。
输入变量,可以引用相同或不同类型的实例。
//The reference type is System.Object and
// the instance type is System.String
object s = "123";
对于引用类型变量,null表示缺少实例。
//The reference type is System.Object and
// there is no instance.
object x = null;
使用没有实例的引用类型变量将导致空引用异常。
string s = null;
s = s + "a"; //BOOM.
值类型变量具有单一类型,并且分配的值必须是此类型而不是其他类型。
int i = 3;
对于某些值类型变量(仅属于Nullable<T>
类型的变量),可以指定null。这表明没有价值。
int? i = null;
使用没有值的值类型不会生成空引用异常 - 不涉及引用。
int? i = null
if (i < 3) //false
答案 3 :(得分:2)
null是“null type”,它继承自object。
见ECMA-334 11.2.7
答案 4 :(得分:1)
我认为null本身不是一个对象。
答案 5 :(得分:0)
null不是类型,它是一个值。更具体地说,它是一个值,根据定义,它是值的绝对值。在C#中,null可以转换为任何引用类型。
因此null不从System.Object继承,但它是一个可转换为不从System.ValueType继承的任何对象的值。