編譯器錯誤 CS0077
as 運算子必須和參考類型或可為 Null 的類型一起使用 ('int' 是不可為 Null 的實值類型)。
傳遞了 實值類型 給 as運算子。 由於 as
可能傳回 null,所以它只能傳遞參考型別或可能為 Null 的實值型別。
不過,透過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;
}
}
}