如何为Func创建类型同义词<&燃气轮机;C#中的委托类型?

如何为Func创建类型同义词<&燃气轮机;C#中的委托类型?,c#,generics,delegates,C#,Generics,Delegates,假设我有类似的代码: Func<int, int, int> combineResults(Func<int, int, int> f, Func<int, int, int> g) { return (x, y) => f(x, y) + g(x, y); } 或者更一般地说: delegate int BinaryOp<T>(T x, T y); Func()。Func()的声明是 public delegate TResul

假设我有类似的代码:

Func<int, int, int> combineResults(Func<int, int, int> f, Func<int, int, int> g)
{
    return (x, y) => f(x, y) + g(x, y);
}
或者更一般地说:

delegate int BinaryOp<T>(T x, T y);
Func()。
Func()
的声明是

public delegate TResult Func<in T, out TResult>(T arg)
public委托TResult Func(T参数)
当然,您可以按照@hvd建议的方式声明自己的委托:

public delegate T BinaryOp<T>(T x, Ty);
公共委托T二进制操作(tx,Ty);
必须始终在委托声明中指定返回类型吗

根本不需要-您甚至根本不需要返回类型-查看
EventHandler

公共委托无效事件处理程序(
对象发送器,
特文塔格酒店
)
有没有一种方法可以在C中编写类似于“type”的东西#


如果您正在寻找的是
typedef
等价物,那么就没有了

delegate T BinaryOp(tx,ty)有什么问题?@hvd什么都没有,太完美了。正如问题中提到的那样,我匆忙地认为这是不可能的。谢谢
delegate T BinaryOp<T>(T x, T y);
delegate BinaryOp<T> BinaryCombinator<T>(BinaryOp<T> f, BinaryOp<T> g);
static BinaryOp<int> sum = (x, y) => x + y;
static BinaryOp<int> sub = (x, y) => x - y;
static BinaryCombinator<int> combineResult = (f, g) => (x, y) => f(x, y) + g(x, y);
combineResult(sum, sub)(2, 3);
public delegate TResult Func<in T, out TResult>(T arg)
public delegate T BinaryOp<T>(T x, Ty);
public delegate void EventHandler<TEventArgs>(
    Object sender,
    TEventArgs e
)