コンパイラ エラー CS0449
'class' または 'struct' 制約は、他の制約の前に指定されなければなりません。
ジェネリック型またはメソッドの型パラメーターの制約は、特定の順序で行う必要があります。 class
または struct
を最初に指定し (存在する場合)、次にインターフェイスの制約、最後にコンストラクターの制約を指定する必要があります。 このエラーは、 class
または struct
制約が最初にないことが原因で発生します。 このエラーを解決するには、制約句の順序を変更します。
次の例では CS0449 が生成されます。
C#
// CS0449.cs
// compile with: /target:library
interface I {}
public class C4
{
public void F1<T>() where T : class, struct, I {} // CS0449
public void F2<T>() where T : I, struct {} // CS0449
public void F3<T>() where T : I, class {} // CS0449
// OK
public void F4<T>() where T : class {}
public void F5<T>() where T : struct {}
public void F6<T>() where T : I {}
}
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET に関するフィードバック
.NET はオープンソース プロジェクトです。 フィードバックを提供するにはリンクを選択します。