ホームページ > バックエンド開発 > C++ > C#ジェネリックは、特定の整数型にタイプの引数を制約できますか?

C#ジェネリックは、特定の整数型にタイプの引数を制約できますか?

Susan Sarandon
リリース: 2025-02-01 23:26:10
オリジナル
188 人が閲覧しました

Can C# Generics Constrain Type Arguments to Specific Integer Types?

c#一般的な数値タイプの一般的なメソッドの制約

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート