C#null - 它是一个对象

Dar*_*lus 6 c# language-agnostic null

几天前,当我编写C#代码时,我注意到编译器抱怨我必须转换null为特定对象.

这是否意味着null只是该类型的未实例化版本?或者它是Null像Java这样的类的单例值(即使它具有特殊权限)?

编辑:给出错误的代码示例如下:

public String duplicate(String toDuplicate)
{
    return toDuplicate + toDuplicate;
}

public String duplicate(int? toDuplicate)
{
    String asString = toDuplicate.toString();

    return asString + asString;
}

public static int Main(string[] args)
{
    //This needs to be cast:
    duplicate(null);
    //To:
    duplicate((string)null);
}
Run Code Online (Sandbox Code Playgroud)

null在Java中评论的原因是在阅读之后:

还有一个特殊的null类型,表达式的类型为null,没有名称.由于null类型没有名称,因此无法声明null类型的变量或转换为null类型.空引用是null类型表达式的唯一可能值.null引用始终可以强制转换为任何引用类型.实际上,程序员可以忽略null类型,只是假装null只是一个可以是任何引用类型的特殊文字.

在这里找到:null是一个对象吗?

Lui*_*ipe 6

当我重载方法时,我得到你引用的错误,编译器无法解析在编译时调用哪个方法.是吗?


Ayk*_*vik 5

根据MSDN描述:

null关键字是表示空引用的文字,不引用任何对象.null是引用类型变量的默认值.普通值类型不能为空.但是,C#2.0引入了可空值类型.