泛型委托和非泛型委托相似,只是泛型委托进行了一层抽象,将中间涉及的操作类型以及返回值类型抽象为了类型参数,以便更大限度地使用该委托,节省了代码量,提高了通用性,但是也增加了代码的复杂程度。
声明泛型委托的语法如下:
delegate TResult DelegateName<T,TResult>(T data)
其中:TResult 为返回类型,T为委托形参
#region 泛型委托
public class MyPrinter
{
public static string PrintString(string msg)
{
return string.Empty;
}
public static int PrintInteger(string msg)
{
return 0;
}
public static string PrinterStringEx(int number)
{
return string.Empty;
}
}
#endregion
调用
//泛型委托声明
delegate TResult PrintDelegate<T, TResult>(T data);
//泛型委托的类型实参
PrintDelegate<string, string> printDelegate = MyPrinter.PrintString;
PrintDelegate<int, string> printDelegate2 = MyPrinter.PrinterStringEx;
PrintDelegate<string, int> printDelegate3 = MyPrinter.PrintInteger;