我想拥有一个方法的委托,该方法接受一个参数并返回相同类型的结果。 我还希望类型由泛型类型参数确定,但以下语法使我失望。
delegate T SomeDelegate(T param)<T>;
我怎么能实现这个目标?
答案 0 :(得分:5)
必须在方法/委托名称和常规参数列表之间声明type参数:
delegate T SomeDelegate<T>(T param);
答案 1 :(得分:2)
您必须将<T>
放在Delegate-Name和开括号之间:delegate T SomeDelegate<T>(T param);
。关闭括号后,您只能说,T
必须是哪种类型,以确保传递正确的类型。例如:
delegate T SomeDelegate<T>(T param) where T : IDisposable;
通常这是必要的,以确保T由Disposable
继承。因此,您稍后可以将T
转换为IDposposable
并调用接口的某些方法。
请注意,只有接口可以是用户进行过滤。