ホームページ > バックエンド開発 > C++ > .NETの一般的なタイプを制約して、数値タイプのみを受け入れるにはどうすればよいですか?

.NETの一般的なタイプを制約して、数値タイプのみを受け入れるにはどうすればよいですか?

Patricia Arquette
リリース: 2025-02-01 23:36:13
オリジナル
981 人が閲覧しました

How Can I Constrain Generic Types in .NET to Only Accept Numeric Types?

.NETジェネリックを数値タイプに制限する

.NETジェネリックはタイプの柔軟性を提供しますが、多くの場合、タイプの制約が必要です。 頻繁に必要なのは、一般的なタイプの引数をInt16Int32Int64UInt16UInt32UInt64

などの数値タイプに制限することです。

.NET 7 以前のバージョンには直接的なソリューションがありませんでしたが、.NET 7は、すべての数値タイプの最も包括的なインターフェイスとして

(in

)を導入します。特に整数タイプの場合、INumber<T>が利用可能です。System.Numerics IBinaryInteger<T>

コード例:整数関数

この例では、

を使用してIntegerFunctionを示しています IBinaryInteger<T>

使用法:
<code class="language-csharp">static bool IntegerFunction<T>(T value) where T : IBinaryInteger<T>
{
    return value > T.Zero;
}</code>
ログイン後にコピー

<code class="language-csharp">Console.WriteLine(IntegerFunction(5));         // True
Console.WriteLine(IntegerFunction((sbyte)-5)); // False
Console.WriteLine(IntegerFunction((ulong)5));  // True</code>
ログイン後にコピー
pre-.net 7アプローチ

.NET 7の前に、この制約を達成することはより困難でした。 クラスで工場パターンを使用するなどの方法が提案されましたが、これらはエレガントではなく、拡張性の低いコードをもたらしました。

以上が.NETの一般的なタイプを制約して、数値タイプのみを受け入れるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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