17.9 泛型委托
泛型委托和非泛型委托也很相似,只是泛型委托进行了一层抽象,将中间涉及的操作类型以及返回值类型抽象为了类型参数,以便更大限度地复用该委托。使用泛型委托可以避免产生过多的比较相似的委托声明,节省了代码量,提高了通用性,但也稍微增加了代码的复杂度。
声明泛型委托的语法如图17-12所示:
图 17-12 泛型委托的语法
接下来,我们使用一段代码示例来进行说明,如代码清单17-11所示。
代码清单17-11 泛型委托示例
namespace ProgrammingCSharp4
{
//泛型委托
delegate TResult PrintDelegate<T,TResult>(T data);
class GenericsSample
{
public static void Main()
{
//注意观察泛型委托的类型实参
PrintDelegate<string,string>printDelegate=MyPrinter.PrintString;
PrintDelegate<int,string>printDelegate2=MyPrinter.PrinterStringEx;
PrintDelegate<string,int>printDelegate3=MyPrinter.PrintInteger;
}
}
public class MyPrinter
{
public static string PrintString(string msg)
{
return "";
}
public static int PrintInteger(string msg)
{
return 0;
}
public static string PrinterStringEx(int number)
{
return "";
}
}
}