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

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

Susan Sarandon
Susan Sarandonオリジナル
2025-02-01 23:26:10189ブラウズ

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

歴史的背景
<code class="language-csharp">static bool IntegerFunction<T>(T value) where T : IBinaryInteger<T>
{
    return value > T.Zero;
}</code>

.NET 7の前に、C#はそのような制約を提供しませんでした。 Anders Hejlsbergが説明したように、その理由は不必要な複雑さを避けるためであり、実際の利点は限られています。

<code class="language-csharp">Console.WriteLine(IntegerFunction(5));         // True
Console.WriteLine(IntegerFunction((sbyte)-5)); // False
Console.WriteLine(IntegerFunction((ulong)5));  // True</code>
制約をサポートするために直接利用できないシーンの場合、工場モデルや戦略などの代替方法を使用することをお勧めします。

以上がC#ジェネリックは、特定の整数型にタイプの引数を制約できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。