首页 > 解决方案 > 为什么“as”运算符必须传递一个引用或可为空的类型?

问题描述

所以我知道asC# 中的运算符必须传递一个引用或可为空的类型,因为它可以返回 null,我不明白的是 - 为什么?

返回 null 应该与传递给它的参数分开,因为我不知道它的内部工作原理我只能利用我对普通方法的知识,这就是我通常返回的内容与我通过什么论据。

换句话说,我想象as操作员是这样的伪代码:

private object as(object arg1, object arg2)
{
    if (arg1 can be cast to arg2)
        return (arg2)arg1;
    else
        return null;
}

那么,传递的参数是引用还是值类型又有什么关系呢?

标签: c#type-conversion

解决方案


想象一下,您想intas

int number = object as int;

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


推荐阅读