本文描述了一种在 C# 中允许添加具有为它们定义的 + 运算符的任意值类型的方法。本质上它允许以下代码:
public T Add(T val1, T val2)
{
return val1 + val2;
}
此代码无法编译,因为无法保证 T 类型具有“+”运算符的定义,但使用如下代码可以实现效果:
public T Add(T val1, T val2)
{
//Num<T> defines a '+' operation which returns a value of type T
return (new Num<T>(val1) + new Num<T>(val2));
}
按照链接查看 Num 类是如何实现这一点的。无论如何,关于这个问题。有什么方法可以在 C 或 C++ 中实现相同的效果?出于好奇,我试图解决的问题是允许 CUDA 内核通过允许它在更多类型上运行来更加灵活/通用。
更新:对于 .NET,Marc Gravell 制作了一个实用程序库,可以非常优雅地解决操作员问题。