.NET 、
、、Int16
、Int32
、Int64
、UInt16
など、genericメソッドタイプの引数を.netの特定の数値タイプに制限するという課題に対処しています。 🎜>
UInt32
UInt64
Modern .Net(7以降):
.NET 7は、すべての数値タイプを網羅したインターフェイスを導入します。 特に整数タイプの場合、
を使用します。これにより、簡潔なソリューションが提供されます:
INumber<T>
IBinaryInteger<T>
static bool IsPositiveInteger<T>(T value) where T : IBinaryInteger<T> { return value > T.Zero; }
.NET 7の前に、特定の数値タイプへの直接的な制約は使用できませんでした。 回避策には以下が含まれます 1。工場のパターン:
工場を採用して、カスタム計算機クラスのインスタンスを作成します。 この計算機は、特定の数値型操作を処理し、さまざまなタイプの柔軟性を提供します。
2。ポリシーベースのアプローチ:
共通インターフェイスを実装するポリシークラスを定義します。一般的な方法は、ポリシーインスタンスをパラメーターとして受け入れ、さまざまな数値タイプを使用したインスタンス化を可能にします。 このアプローチは、懸念のよりクリーンな分離を促進します
この改訂された説明は、明確さと流れを改善しながら元の情報を維持します。以上が.NETの特定の数値タイプにジェネリックメソッドを制約するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。