通用委托

Generic Delegate

我想要一个方法的委托,该方法接受一个参数和 returns 个结果,两者类型相同。 我还希望类型由泛型类型参数确定,但以下语法使我失败。

delegate T SomeDelegate(T param)<T>;

我怎样才能做到这一点?

必须在method/delegate名称和常规参数列表之间声明类型参数:

delegate T SomeDelegate<T>(T param);

您必须将 <T> 放在代表姓名和左括号之间:delegate T SomeDelegate<T>(T param);。在右括号之后,您只能说 T 必须是哪种类型,以确保传递正确的类型。例如:

delegate T SomeDelegate<T>(T param) where T : IDisposable;

通常这是必要的,以确保 T 被 Disposable 继承。所以你稍后可以将 T 转换为 IDposposable 并调用接口的一些方法。

注意,只有界面可以被用户过滤。