C#中委托的常规用法

委托的定义及使用方法

namespace 委托
{
    class Program
    {
        static void Main(string[] args)
        {
            #region MyRegion
            ////3,定义委托变量
            StudyDelegate study = null;

            //4,关联委托变量
            study += BeginStudy1;   //把函数名当成变量来用
            study += BeginStudy2;
            study += BeginStudy3;
            study += BeginStudy4;

            //5,使用委托变量
            study();

            //可以动态的实现增减,+=  是加用,-=是减用
            study -= BeginStudy2;   //这样方法2就不再执行了。

            #endregion

        }
        #region MyRegion
        ////2,编写具体方法
        static void BeginStudy1()
        {
            Console.WriteLine("学C#技术1");
        }
        static void BeginStudy2()
        {
            Console.WriteLine("学C#技术2");
        }
        static void BeginStudy3()
        {
            Console.WriteLine("学C#技术3");
        }
        static void BeginStudy4()
        {
            Console.WriteLine("学C#技术4");
        }
        #endregion
    }

    //1,声明委托(定义方法的原型 )
    public delegate void StudyDelegate();
}

【1】委托是一种数据类型,像类一样的数据类型,一般都是直接在命名空间中定义
【2】定义委托时,需要指明返回值类型,委托名与参数列表,这样就能确定该类型的委托侟什么的方法
【3】使用委托:
3.1 声明委托变量
3.2 委托是一个引用类型,就像类一样,所以当声明委托变量后,如果不赋值则该委托变量为Null,
所以在使用委托变量前最好做非空校验 weituo != null
3.3 委托类型的变量只能赋值一个委托类型的对象。

委托与事件

namespace 委托与事件
{
    class Program
    {
        //int 是委托的返回类型,另一个int是方法类型        
        delegate int Transformer(int x);

        //int 是返回类型,另一个int是方法类型,所以可以用上面定义的委托。
        static int Square(int x) => x * x;
        static void Main(string[] args)
        {
            //委托类型   实例   =   函数名
            //Transformer t = new Transformer(Square);//原型
            Transformer t = Square;
            //调用委托
            //int resutl = t.Invoke(3); //原型
            int resutl = t(3);
            Console.WriteLine(resutl);
            Console.ReadKey();
        }
    }
}
转载请注明出处:  https://www.cntworld.cn
智能工控 » C#中委托的常规用法

发表回复

提供最优质的资源集合

立即查看 了解详情