2009-12-02 49 views

回答

18

幸運的是, .NET 2.0已經支持泛型,所以你可以用相同的簽名創建自己的委託:

public delegate T Func<T>(); 
17

由於Konamiman說,你可以非常輕鬆地聲明自己的委託類型在我"versions" page,我把它們都宣稱所以你可以剪切並粘貼它們:

public delegate void Action(); 
public delegate void Action<T1, T2>(T1 arg1, T2 arg2); 
public delegate void Action<T1, T2, T3>(T1 arg1, T2 arg2, T3 arg3); 
public delegate void Action<T1, T2, T3, T4>(T1 arg1, T2 arg2, T3 arg3, T4 arg4); 
public delegate TResult Func<TResult>(); 
public delegate TResult Func<T, TResult>(T arg); 
public delegate TResult Func<T1, T2, TResult>(T1 arg1, T2 arg2); 
public delegate TResult Func<T1, T2, T3, TResult>(T1 arg1, T2 arg2, T3 arg3); 
public delegate TResult Func<T1, T2, T3, T4, TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4); 

(我還沒有避免在這裏滾動,因爲你可能不想在IDE中換行。請注意,Action<T>是.NET 2.0的一部分,因此它不在上面。)

+0

可能的錯字:操作是.NET 2的一部分,因此它缺少... – 2012-04-16 14:18:15

+0

@gt:是的,我沒有粘反引號周圍。修正了,謝謝。 – 2012-04-16 15:59:45

相關問題