c# - 为什么“as”运算符必须传递一个引用或可为空的类型?
问题描述
所以我知道as
C# 中的运算符必须传递一个引用或可为空的类型,因为它可以返回 null,我不明白的是 - 为什么?
返回 null 应该与传递给它的参数分开,因为我不知道它的内部工作原理我只能利用我对普通方法的知识,这就是我通常返回的内容与我通过什么论据。
换句话说,我想象as
操作员是这样的伪代码:
private object as(object arg1, object arg2)
{
if (arg1 can be cast to arg2)
return (arg2)arg1;
else
return null;
}
那么,传递的参数是引用还是值类型又有什么关系呢?
解决方案
想象一下,您想int
在as
int number = object as int;
如果对象是int
,则强制转换成功并将结果存储到int number
. 如果对象不是int
,则转换返回null
并且它不能存储在不可为空类型的变量中。这就是为什么编译器不允许使用as
不可为空的类型。
推荐阅读
- php - 您将如何测试一个可以向查询添加数十个不同过滤器的类?
- git - 无法推送到 Github 或 Bitbucket
- javascript - MVC - 添加在客户端创建的新记录
- mule - Mulesoft 自定义策略转换扩展
- google-tag-manager - 通过 Google Tag Manager 中的计算组合两个数据层变量
- android - 具有固定纵横比的 ConstraintLayout 链
- perl - 在linux上自动替换主机密钥
- api - linkedin "此应用程序不允许创建应用程序令牌"
- javascript - CSS 将相似项目设置为与屏幕上最高项目相同的高度
- python-3.x - 切换音乐开/关 Kivy