.Net に数値のポリモーフィズムがないこと、つまり、bool、byte、uint、int などのさまざまな種類の数値型を統一する INumeric インターフェイスがないことは本当に残念です。極端な場合、抽象の完全なパッケージが必要です。代数型。
Joe Duffy には、この問題に関する記事があります。
http://www.bluebytesoftware.com/blog/CommentView,guid,14b37ade-3110-4596-9d6e-bacdcd75baa8.aspx
.Net や C# に影響を与えることなく、これを改良するために、C# でこれをどのように表現しますか?
最初に 1 つ以上の抽象型 (INumeric などのインターフェイス、またはそれ以上の抽象型) を定義してから、これらを実装する構造体を定義し、新しい型を返す操作を提供しながら int などの型をラップするという 1 つのアイデアがあります (例: Integer32 : INumeric; ここで加算は次のように定義されます
public Integer32 Add(Integer32 other)
{
return Return(Value + other.Value);
}
このコードの実行速度が少し心配ですが、少なくとも抽象的です。
良さをオーバーロードする演算子はありません...
他のアイデアはありますか?
.Net は、この種の抽象化がなく、効率的であることができない場合、実行可能な長期的なプラットフォームのようには見えません。
抽象化は再利用です。
アップデート:
これは、これまでの実装型シグネチャの例です。
public struct Integer32 : INumeric<Integer32, Int32>, IOrder<Integer32, Int32>
共変の戻り値の型の欠如を補う。