在C++中,您可以像这样编写代码:
但是在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
,然后对所有内容进行类型检查),但这种方法效率低下且不易扩展。所以,再次问一遍,为什么?