将零值施放为类型



如果我们将一些空变量投入到类型中,我希望编译器会抛出一些例外,但事实并非如此。为什么?

我的意思是

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

object t1 = null;
TestClass t2 = (TestClass)t1; 

也许在第一个中,as操作员处理异常处理。但是其他例子必须引发例外。编译器如何处理这些情况?也许由于变量为null,因此不会执行铸造操作?因为如果确实施放了一个空指针,则必须是错误。

根据文档(明确的转换),您可以从基本类型施放到派生类型。

由于null是所有参考类型的有效值,只要存在铸件路由,您就应该可以。

object null→ TestClass null的作用为object是所有参考类型的超类。

但是,如果尝试string null→TestClass NULL(假设TestClass不是string的子类型),则您会发现汇编错误,因为TestClass不是string的派生类型。

相关内容

  • 没有找到相关文章

最新更新