【发布时间】:2019-03-16 21:47:16
【问题描述】:
所以我知道 C# 中的as 运算符必须传递一个引用或可为空的类型,因为它可以返回 null,我不明白的是 - 为什么?
返回 null 应该与传递给它的参数分开,因为我不知道它的内部工作原理我只能利用我对普通方法的了解,这就是我返回的东西通常什么都没有与我传递的参数有关。
换句话说,我认为as 运算符类似于以下伪代码:
private object as(object arg1, object arg2)
{
if (arg1 can be cast to arg2)
return (arg2)arg1;
else
return null;
}
那么,传递的参数是引用类型还是值类型又有什么关系呢?
【问题讨论】:
-
你的
as的“伪代码版本”实际上并没有像as运算符那样做,所以它实际上不是一个有效的例子。您的as运算符返回object,但 actualas运算符返回为表达式指定的任何类型。如果该类型是值类型,当然不能有null值,那它怎么会起作用?无论如何,您的问题已经被提出并回答了......请参阅标记的重复项。 -
@PeterDuniho,哦,实际上它的样子是
private T as(object arg1, T arg2)?
标签: c# type-conversion