将null值转换为类型

Ufu*_*MEN 16 c# null casting compiler-errors nullreferenceexception

我有一个简单的问题.如果我们将一些null变量转换为一个类型.我希望编译器抛出一些异常,但事实并非如此.我真的想知道原因.我的意思是

string sample1 = null as string;
string sample2 = (string)null;


object t1 = null;
TestClass t2 = (TestClass)t1; 
Run Code Online (Sandbox Code Playgroud)

可能在第一个,因为操作员处理异常处理.但其他样本必须抛出异常.编译器如何处理这些情况,可能因为变量为null,它不执行强制转换操作?因为如果它真的抛出空指针它必定是一个错误.

小智 21

根据文档(显式转换),您可以从基类型转换为派生类型.

由于null是所有引用类型的有效值,只要存在转换路由,您应该没问题.

objectnull→ TestClassnull object与所有引用类型的超类一样.

但是,如果您尝试stringnull→ TestClassnull(假设TestClass不是子类型string),您将发现编译错误,因为TestClass它不是派生类型string.