在 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
对对象进行泛型,然后对它进行类型检查),但这效率低且不能很好地扩展。那么,再次,为什么?