为什么必须为“ as”运算符传递引用或可为空的类型?

时间:2019-03-16 21:47:16

标签: c# type-conversion

所以我知道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;
}

那么,如果传递的参数是引用或值类型,为什么会那么重要呢?

1 个答案:

答案 0 :(得分:0)

假设您想在int的帮助下将某些对象投射到as

int number = object as int;

如果object是int,则转换成功,结果存储到int number中。如果对象不是int,则转换返回null,并且它不能存储在非空类型的变量中。这就是为什么编译器不允许将as与不可空类型一起使用的原因。