public void GreetPeople(string name) { MakeGreet(name); MakeGreet = null; var delegateList = MakeGreet?.GetInvocationList(); //foreach (var d in delegateList)//need to check if delegateList is null or not(complier is not smart enough) foreach (var d in delegateList != null?delegateList:new GreetingDelegate[0]) { d.ToString(); } if (delegateList != null) { var delArray = MakeGreet.GetInvocationList(); foreach (var del in delArray) { try { //EventHandler method = (EventHandler)del; //method(this, EventArgs.Empty); del.DynamicInvoke(this, EventArgs.Empty);//a more commonly function, applies to all types of delegate } catch (Exception ex) { Console.WriteLine(ex.Message); } } } }
public void Greet(string name) { //if (MakeGreet != null) // { //如果有对象注册 // MakeGreet(name); //调用所有注册对象的方法 // } MakeGreet?.Invoke(name);//简化上面的写法 }
public void Greet(string name, MakeGreet makeGreet) { makeGreet(name); }
public void GreetPeople(string name) { MakeGreet?.Invoke(name); }