其他分享
首页 > 其他分享> > 委托写法学习

委托写法学习

作者:互联网

public delegate void MyDelegate();
    public class MyClass
    {
        public void MyFunc()
        {
            Console.WriteLine("MyFunc Run");
        }
    }
    public class Program
    {
        static void Main(string[] args)
        {
            MyClass myClass = new MyClass();
            MyDelegate myDelegate;
            //1.使用new创建委托对象时指定方法
            myDelegate = new MyDelegate(myClass.MyFunc);  //先用=运算符创建实例,=后面同样可以使用以下任何一种方式进行赋值
            //2.直接用方法名赋值
            myDelegate += myClass.MyFunc;
            //3.使用匿名方法赋值
            myDelegate += delegate ()
            {
                Console.WriteLine("Anonymous methods run");
            };
            //4.使用Lambda表达式赋值
            myDelegate += () =>
            {
                Console.WriteLine("Lambda run");
            };
            //5.使用相同类型的委托实例赋值
            myDelegate += new MyDelegate(myClass.MyFunc);
            //6.使用-=运算符删除委托中指定的方法
            myDelegate -= myClass.MyFunc;  //※只能通过此种方式才可以将委托列表中指定方法移除,不能通过myClass = null等方式移除
            
            //执行委托中的方法
            myDelegate();
            //或者通过其Invoke()方法执行委托
            //myDelegate.Invoke();
            //增加非空判断
            //if (myDelegate != null) myDelegate();
            //或者简化为(需要C#6.0以上)
            //myDelegate?.Invoke();
            
            Console.ReadKey();
        }
    }

 

标签:MyFunc,Console,委托,学习,myDelegate,myClass,写法,赋值
来源: https://www.cnblogs.com/songcau/p/14980766.html