unity游戏开发-C#语言基础篇(委托)

 class Program
    {
        private delegate void mydelegate(int a);//定义一个没有返回值带参数的委托类型
        delegate string mydelegate1();//定义一个有返回值类型的委托;

        delegate void mydelegate(int a);

        delegate string mydelegate1();
        static void Main(string[] args)
        {

             int a = 10; 定义一个int类型赋值为10;
            mydelegate my = new mydelegate(Test1);//实例化对象  委托实例化   一个实例化delegate类型(传递相应的方法)
            // mydelegate my = Test1;//直接使用类型 指向test的方法
             my(a);

            int a2 = 20;
            a2.ToString();
            mydelegate1 m1 = new mydelegate1(a2.ToString);
            Console.WriteLine("{0}",m1);

            Program p = new Program();

            Console.WriteLine(p);
            //Console.WriteLine("Hello World!");

            Action t = Test;//内置委托的类型  Action 是没有返回值
            t();

            Action t2 = Test1;//带参使用

            t2(10);

            Func  t5 = Test5;
            t5();

            Func t6=Test6;
            t6(10);

            Func t7=Test7;//参数1:穿入参数类型 参数2: 传入参数类型 参数3:方法返回值类型
            t7(10,20);



            //练习

            mydelegate my = new mydelegate(Test111);//上面已经定义带参数的委托类型 参数传入的是带参数的方法 注意方法返回值类型
            my(88);//委托后 调用方法; 传入参数;


            mydelegate1 my1 = new mydelegate1(Test222);
            my1();


            Action t11 = Test11;//不带参数
            //t11();




            Action t22 = Test22;//带参数

            // t22("123");



            Func t33 = Test33;
            // t33();

            Func t44 = Test44;

            // t44("888");




            Console.ReadKey();
        }
        public override string ToString()//重写
        {
            return base.ToString();
        }


        static void Test()
        {
            Console.WriteLine("{Test");
        }

        static void Test1(int a)
        {
            Console.WriteLine("{0}", a);
        }

        static int Test5()
        {
            Console.WriteLine("没有参数,但有返回值类型");
            return 10;
        }

        static int Test6(int a)
        {
            Console.WriteLine("{0}", a);
            return a;
        }

        static double Test7(int a, int b)
        {
            Console.WriteLine("{0}+{1}={2}", a, b, a + b);
            return a;
        }




        static void Test11()
        {

            Console.WriteLine("没有参数的委托");
        }


        static void Test22(string str)
        {

            Console.WriteLine("有参数的没有返回值类型的委托:{0}", str);
        }


        static string Test33()
        {

            Console.WriteLine("没有带参有返回值类型的fun ");
            return "123!";
        }


        static string Test44(string str2)
        {

            Console.WriteLine("有返回值类型的带参数的委托:{0}", str2);

            return "888";
        }



        public static void Test111(int a)
        {

            Console.WriteLine("{0}", a);
        }



        public static string Test222()
        {
            Console.WriteLine("有返回值类型的带参数的委托方法{");
            return "1";
        }
    }

你可能感兴趣的:(unity游戏开发-C#语言基础篇(委托))