编译器错误 CS0077
as 运算符必须与引用类型或可以为 null 的类型一起使用(“int”是不可以为 null 值的类型)。
向 as 运算符传递了 值类型。 as
可返回 null,因此只能向其传递 引用类型 或可以为 null 的值类型。
但是,通过使用 pattern matching 和 is 操作符,我们可以在一个步骤中直接执行类型检查和赋值。
下面的示例生成 CS0077:
// CS0077.cs
using System;
struct S
{
}
class M
{
public static void Main()
{
object o;
S s;
o = new S();
s = o as S; // CS0077, S is not a reference type
// Use pattern matching instead of as
if (o is S sValue)
{
s = sValue;
}
}
}