共用方式為


編譯器錯誤 CS0413

更新:2007 年 11 月

錯誤訊息

型別參數 'type parameter' 無法和 'as' 運算子搭配使用,因為它沒有類別的型別條件約束或 'class' 條件約束

如果泛型型別沒有類別型別條件約束,卻使用 as 運算子,便會發生這個錯誤。as 運算子僅能用於參考型別,因此型別參數必須受到條件約束,以確定它不是實值型別。若要避免這個錯誤,請使用類別型別條件約束或參考型別條件約束。

這是因為 as 運算子會傳回 null,但它不是實值型別的可能數值,而除非型別參數為類別型別條件約束或參考型別條件約束,否則就必須將型別參數視為實值型別。

範例

下列範例會產生 CS0413:

// CS0413.cs
// compile with: /target:library
class A {}
class B : A {}

class CMain
{
   A a = null;
   public void G<T>()
   {
      a = new A();
      System.Console.WriteLine (a as T);  // CS0413
   }

   // OK
   public void H<T>() where T : A
   {
      a = new A();
      System.Console.WriteLine (a as T);
   }
}