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);
                    }
                }
            }
        }
Пример #2
0
 public void Greet(string name)
 {
     //if (MakeGreet != null)
     // {       //如果有对象注册
     //    MakeGreet(name);       //调用所有注册对象的方法
     // }
     MakeGreet?.Invoke(name);//简化上面的写法
 }
Пример #3
0
 public void Greet(string name, MakeGreet makeGreet)
 {
     makeGreet(name);
 }
Пример #4
0
 public void GreetPeople(string name)
 {
     MakeGreet?.Invoke(name);
 }
Пример #5
0
 public void Greet(string name, MakeGreet makeGreet)
 {
     makeGreet(name);
 }