で演算子オーバーロードを必要とするカント、あなたがこのようなコード記述することができます。なぜあなたはC++でジェネリック
template<class T>
T Add(T lhs, T rhs)
{
return lhs + rhs;
}
をしかし、あなたはC#で、このような何かを行うことはできません。
public static T Add<T>(T x, T y) where T : operator+
{
return x + y;
}
があります何らかの理由がありますか?私はそれが反射を介して達成することができることを知っています(オブジェクトで汎用Add
を実行してから、すべてのタイプを調べて実行します)。しかし、これは非効率的で、スケールがよくありません。だから、もう一度、なぜ?
これは、http://stackoverflow.com/questions/756954/arithmetic-operator-overloading-for-a-generic-class-in-c-sharpの複製のように見えます。 – neontapir
@neontapir受け入れられた答えは、反映を使用しています。私はそれがそうすることができ、私はしたくないと知っていると言いました。 –
2番目の段落では、C#でこれを行うことはできないと思います。つまり、質問に「演算子のオーバーロードタイプの制約はないのですか? (私が知らない答え、btw)。 –