delegate(方法代理)

我总觉得有点任意门的意思。。。

静态方法和实例方法不同,因为静态方法不需要实例支持,所以静态方法的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 }
原文地址:https://www.cnblogs.com/henyihanwobushi/p/2590835.html