c#でgenericsを使用する場合、型パラメーターtを次の値のみに制限できる制約はありますか?int16、int32、int64、uint16、uint32、およびuint64?
回答
.NET 7では、TAMERICAL型に制限するために特別に使用されるインターフェイス:名前空間の。整数型のみを受け入れるには、
を使用できます。
System.Numerics
次のメソッドの実装を考慮してください:INumber<T>
IBinaryInteger<T>
IntegerFunction
static bool IntegerFunction<T>(T value) where T : IBinaryInteger<T> { return value > T.Zero; }
.NET 7の前に、C#はそのような制約を提供しませんでした。 Anders Hejlsbergが説明したように、その理由は不必要な複雑さを避けるためであり、実際の利点は限られています。
Console.WriteLine(IntegerFunction(5)); // True Console.WriteLine(IntegerFunction((sbyte)-5)); // False Console.WriteLine(IntegerFunction((ulong)5)); // True
以上がC#ジェネリックは、特定の整数型にタイプの引数を制約できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。