如果我们将一些空变量转换为某种类型,我期望编译器会抛出异常,但它没有。为什么? 我的意思是
string sample1 = null as string;
string sample2 = (string)null;
object t1 = null;
TestClass t2 = (TestClass)t1;
也许在第一个例子中,as
运算符处理了异常情况。但其他的例子必须抛出异常。编译器如何处理这些情况呢?也许因为变量为空,它不执行转换操作?因为如果它真的转换了空指针,那么这肯定是个错误。
class
)而不是值类型(struct
),那么您就没问题了。+1 @AlfieGoodacre - mausworksMyMethod(Foo foo)
和MyMethod(Bar bar)
,并且想在第一个重载中传递一个null
值。您会怎么做?是使用MyMethod((Foo)null)
还是MyMethod(null as Foo)
? - GDS