我乃菜鸟,我自己画的关于委托的理解:
代码:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace CalculateDiscount 7 { 8 //定义委托 9 public delegate List<decimal> dlgDiscount(decimal Price, decimal Area); 10 11 //计算折扣的类 12 class CalculateDisc 13 { 14 //计算完之后的房子现价、单价 15 static List<decimal> list = new List<decimal>(); 16 17 public decimal TotalPrice//现总价 18 { 19 get{ 20 return list[0]; 21 } 22 } 23 24 public decimal UnitPrice//单价 25 { 26 get{ 27 return list[1]; 28 } 29 } 30 31 //计算价格的函数 32 public void CalPrice(decimal Price, decimal Area, List<dlgDiscount> dlgList) 33 { 34 list.Add(Price); 35 list.Add(Area); 36 foreach (var item in dlgList) 37 { 38 //计算 39 list = item(list[0], list[1]); 40 } 41 } 42 } 43 class Program 44 { 45 static void Main(string[] args) 46 { 47 //类的对象 48 CalculateDisc myDisc = new CalculateDisc(); 49 //委托字段 50 List<dlgDiscount> dlgList = new List<dlgDiscount>(); 51 52 //打八折 53 dlgList.Add((decimal Price, decimal Area) => 54 { 55 List<decimal> list = new List<decimal>(); 56 Price = Price * 0.8m; 57 list.Add(Price); 58 list.Add(Area); 59 return list; 60 }); 61 //减现2000元 62 dlgList.Add((decimal Price, decimal Area) => 63 { 64 List<decimal> list = new List<decimal>(); 65 Price = Price - 2000m; 66 list.Add(Price); 67 list.Add(Price/Area); 68 return list; 69 }); 70 71 //开始计算 72 decimal myPrice = 200000m, myArea = 100m;//例子,20W的房子,100平 73 myDisc.CalPrice(myPrice, myArea, dlgList); 74 75 //计算完之后的,list保存的就是房子现价和单价 76 Console.WriteLine("现价:{0:F},单价:{1:F}", myDisc.TotalPrice, myDisc.UnitPrice); 77 78 Console.Read(); 79 } 80 } 81 }