将null值转换为类型

时间:2016-12-19 09:32:06

标签: c# casting compiler-errors null nullreferenceexception

我有一个简单的问题。 如果我们将一些null变量转换为一个类型。我希望编译器抛出一些异常,但事实并非如此。我真的想知道原因。 我的意思是 string sample1 = null as string; string sample2 =(string)null; 对象t1 = null; TestClass t2 =(TestClass)t1; 可能在第一个,因为操作员处理异常处理。但其他样本必须抛出异常。编译器如何处理这些情况,可能因为变量为null,它不执行强制转换操作?因为如果它真的抛出空指针它必定是一个错误。

1 个答案:

答案 0 :(得分:16)

According to the documentation(显式转换)您可以从基类型转换为派生类型。

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

object null→TestClass null有效,因为object是所有引用类型的超类。

但是,如果您尝试string null→TestClass null(假设TestClass不是string的子类型),您将发现编译错误为{{1 }}不是TestClass的派生类型。