欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

委托初步了解(代码段展示)

程序员文章站 2024-01-14 08:35:40
一.非含参委托 结果:张三吃饭饭 > 二.含参数委托类 例一:目标函数中放一个参数 结果:先执行 赵六吃呵呵哒 例二:目标函数中放两个参数 结果:李四在使用吃的功能 赵六吃呵呵哒 例三:目标函数和委托类型均有两个参数 结果:李四在使用吃的功能 王五吃呵呵哒 赵六吃呵呵哒 洪七吃呵呵哒 ......

一.非含参委托

using system;
namespace 委托
{
    //2 定义委托类型  委托和目标方法基本一致
    public delegate void delegateeat();
     class program
    {//1 应该有目标方法
        public static void zseat()
        {
            console.writeline("张三吃饭饭--->");
        }
        public static void lseat( )
        {
            console.writeline("李四吃饭饭--->");
        }       
        public static void main(string[] args)
        {  //3 申明委托变量
            delegateeat delegateeat;
            //4 赋值
            delegateeat = zseat;
            delegateeat += lseat;         
            delegateeat += delegateeat;
            delegateeat -= lseat; 
            //5 执行委托
            delegateeat();
        }
    }   
}

结果:张三吃饭饭--->

         李四吃饭饭--->
         张三吃饭饭--->

二.含参数委托类

例一:目标函数中放一个参数

using system;
namespace consoleapplication1
{    
        public delegate void delegateeat();//2
        class program
        {
            /// 第一个参数放置符合类型的方法!!!
            public static void excdelegateeat(delegateeat de)//1
            {              
                console.writeline("先执行");
                de();
            }
            public static void lseat()
            {                
                console.writeline("赵六吃呵呵哒");              
            }
            public static void main(string[] args)
            {
                excdelegateeat(lseat);
            }        
    }
}

结果:先执行

赵六吃呵呵哒

例二:目标函数中放两个参数

using system;namespace consoleapplication1
{    
        public delegate void delegateeat();//2
        class program
        {
            /// 第一个参数放置符合类型的方法!!!
            public static void excdelegateeat(delegateeat de, string username)//1
            {              
                console.writeline("{0}在使用吃的功能", username);
                de();
            }
            public static void lseat()
            {                
                console.writeline("赵六吃呵呵哒");              
            }
            public static void main(string[] args)
            {
                excdelegateeat(lseat, "李四");
            }        
    }
}

结果:李四在使用吃的功能

赵六吃呵呵哒

例三:目标函数和委托类型均有两个参数

 1 using system;
 2 namespace consoleapplication1
 3 {    
 4         public delegate void delegateeat(string x,string y);//2
 5         class program
 6         {
 7             public static void excdelegateeat(delegateeat de, string username)//1
 8             {
 9                 string tr = "王五";
10                 string er = "洪七";
11                 console.writeline("{0}在使用吃的功能", username);
12                 de(tr,er);
13             }
14             public static void lseat(string m,string n)
15             {
16                 console.writeline("{0}吃呵呵哒",m);
17                 console.writeline("赵六吃呵呵哒");
18                 console.writeline("{0}吃呵呵哒",n);
19             }
20             public static void main(string[] args)
21             {
22                 excdelegateeat(lseat, "李四");
23                 console.readkey();
24             }        
25     }
26 }

结果:李四在使用吃的功能

王五吃呵呵哒

赵六吃呵呵哒

洪七吃呵呵哒