我总觉得有点任意门的意思。。。
静态方法和实例方法不同,因为静态方法不需要实例支持,所以静态方法的delegate的target参数会是null,而实例方法需要一个实例支持方法才会显现,这样对象实例方法的delegate需要管理一个对象实例所以target将赋值为对象的引用。
View Code
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace delegete_test 7 { 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 int[] values = { 1, 2, 3 }; 13 Util.Transform(values, Square); // Hook in Square 14 foreach (int i in values) 15 Console.Write(i + " "); // 1 4 9 16 } 17 static int Square (int x) { return x * x; } 18 } 19 public delegate M Transformer<M>(M arg); 20 public class Util 21 { 22 public static void Transform<T>(T[] values, Transformer<T> t) 23 { 24 for (int i = 0; i < values.Length; i++) 25 values[i] = t(values[i]); 26 } 27 } 28 }