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
オブジェクトをジェネリックにしてから、すべてに対して型チェックを実行します)、それは非効率的であり、うまくスケーリングできません。では、なぜですか?