コンパイラ エラー CS0450Compiler Error CS0450

'Type Parameter Name': 制約クラスと 'class' または 'struct' 制約の両方を指定することはできません'Type Parameter Name': cannot specify both a constraint class and the 'class' or 'struct' constraint

構造体の型制約によって制約されている型パラメーターが特定のクラス型によっても制約されることは、論理的な矛盾です。構造体とクラスは相互に排他的なカテゴリであるためです。If a type parameter is constrained by the struct type constraint, it is logically contradictory for it to also be constrained by a specific class type, since struct and class are mutually exclusive categories. 型パラメーターが特定のクラス型の制約で制約される場合、定義上、それはクラス型の制約によって制約されているため、クラス型の制約を指定すると冗長になります。If a type parameter is constrained by a specific class type constraint, then it is by definition constrained by the class type constraint, and so specifying the class type constraint is redundant.

Example

// CS0450.cs  
// compile with: /t:library  
public class GenericsErrors
{  
    public class B { }  
    public class G3<T> where T : struct, B { } // CS0450  
// To resolve, use the following line instead:  
// public class G3<T> where T : B { }  
}