所以我知道C#中的as
运算符必须传递一个引用或可为null的类型,因为它可以返回null,我不明白的是-为什么?
返回null应该与传递给它的参数分开,因为我不知道它的内部工作原理,所以我只能利用我对普通方法的了解,这就是我通常返回的内容将一无所有与我传递的参数有关。
换句话说,我想象as
运算符就像这样的伪代码:
private object as(object arg1, object arg2)
{
if (arg1 can be cast to arg2)
return (arg2)arg1;
else
return null;
}
那么,如果传递的参数是引用或值类型,为什么会那么重要呢?
答案 0 :(得分:0)
假设您想在int
的帮助下将某些对象投射到as
int number = object as int;
如果object是int
,则转换成功,结果存储到int number
中。如果对象不是int
,则转换返回null
,并且它不能存储在非空类型的变量中。这就是为什么编译器不允许将as
与不可空类型一起使用的原因。