17.9 泛型委托

泛型委托和非泛型委托也很相似,只是泛型委托进行了一层抽象,将中间涉及的操作类型以及返回值类型抽象为了类型参数,以便更大限度地复用该委托。使用泛型委托可以避免产生过多的比较相似的委托声明,节省了代码量,提高了通用性,但也稍微增加了代码的复杂度。

声明泛型委托的语法如图17-12所示:

17.9 泛型委托 - 图1

图 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 "";

}

}

}