标签:delegate 支付 不同 reading 有一个 span linq 电话费 sys
相当于Java中的interface 定义的接口,但是 比Java中的interface要好
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ADONetDome { public delegate void UserC(int i); //可以理解为java中的interface 接口,但是委托中不需要去实现,会自动找见相对应类的匹配的方法.又和重载相似,但是方法名不同 public class UserA { public UserC userC; public UserA(){ userC = null; } /// <summary> /// 去交电费,委托C去找个人给我交电话费 /// </summary> public void PayTel(String name,int money){ Console.WriteLine("我是UserC:"+name+"托我去替他交电话费,交"+money+"元"); userC(money); } } public class UserB{ public void goPayOther(int money) { Console.WriteLine("我是UserB: 发现有人让我去交话费,他给了我钱. 好!!!我去交" + money + "元,发现交给其他人了"); } public void goPayTel(int money) { Console.WriteLine("我是UserB: 发现有人让我去交话费,他给了我钱. 好!!!我去交" + money + "元"); } } }
调用
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ADONetDome { class Program { static void Main(string[] args) { UserA A = new UserA(); //有一个对象A人 UserB B = new UserB(); //有一个对象B人 //现在A想让B去交电话费,可是找不见这个人,但是B知道C对象,和他很熟,A和C也很熟 A中有C,不需要创建 然后让C调B中支付的方法 A.userC = B.goPayTel; //A 委托C 去调用C的支付方法,替我交话费 A对象中没有B 对象, C中也没有B对象 ,java中interface中就不一样了,必须需要去实现类实现其中的方法 Console.WriteLine("我是UserA,叫张三,我需要B给我交电话费,需要委托UserC给说一下,把钱给UsreC"); A.PayTel("张三",400); Console.WriteLine("Hello World!"); } } }
标签:delegate 支付 不同 reading 有一个 span linq 电话费 sys
原文地址:https://www.cnblogs.com/han-guang-xue/p/10538851.html