您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

.NET泛型中重载运算符约束的解决方案

.NET泛型中重载运算符约束的解决方案

目前尚无立即答案。运算符是静态的,不能在约束中表示-现有的基元不实现任何特定的接口(与IComparable [ ]相比,可以用来模拟大于/小于)。

然而; 如果您只是想让它工作,那么在.NET 3.5中有一些选择…

我在这里建立了一个库,该库允许使用泛型高效而简单地访问运算符- 例如:

T result = Operator.Add(first, second); // implicit <T>; here

可以作为MiscUtil的一部分下载

此外,在C#4.0中,可以通过dynamic以下方式实现:

static T Add<T>(T x, T y) {
    dynamic dx = x, dy = y;
    return dx + dy;
}

我还曾经(曾经)拥有过一个.NET 2.0版本,但是该版本的测试较少。另一个选择是创建一个界面,例如

interface ICalc<T>
{
    T Add(T,T)() 
    T Subtract(T,T)()
}

等等,但是您需要ICalc<T>;通过所有方法,这会变得混乱。

dotnet 2022/1/1 18:15:02 有404人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶