在c#中重载操作符时可以包括类型参数吗?

本文关键字:包括 类型参数 重载 操作符 | 更新日期: 2023-09-27 18:13:42

我想做一些与这段非编译代码相同的事情

public static B operator + (Func<A,B> f, A a) {
    return f (a);
}

是否有办法指定类型AB ?我试着

public static B operator +<A,B> (Func<A,B> f, A a) {
    return f (a);
}

在c#中重载操作符时可以包括类型参数吗?

不,操作符在c#中不能是泛型的。可以在泛型类型中重载操作符,但操作符本身不能有类型形参。

如果你看一下c#规范中用户定义操作符的语法(例如在c# 5规范的10.10节中),你会发现它没有任何地方可以添加类型参数(或类型参数约束)。