通用代表

时间:2015-01-18 10:52:45

标签: c# generics

我想拥有一个方法的委托,该方法接受一个参数并返回相同类型的结果。 我还希望类型由泛型类型参数确定,但以下语法使我失望。

delegate T SomeDelegate(T param)<T>;

我怎么能实现这个目标?

2 个答案:

答案 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并调用接口的某些方法。

请注意,只有接口可以是用户进行过滤。