首页 > 其他 > 详细

委托的使用6.9

时间:2015-05-21 02:06:21      阅读:180      评论:0      收藏:0      [点我收藏+]

委托:

?一、委托:

?1.C#中提供委托这种构造,通过使用Delegate类即是委托类,委托实例可以封装属于可调用实体的方法。通过委托可以间接的调用一个方法(实例方法或静态方法都可以)。委托包含对方法的引用,使用委托可以在运行时动态的设定要调用的方法,执行或调用一个委托将执行该委托引用的数据.

?2.委托类型是一种引用方法的类型,而且是面向对象的、类型安全和保险的,一旦为委托分配了方法,委托将于该方法具有完全相同的行为,委托方法的使用可以像其他任何方法一样,具有参数和返回值

?

?二、委托的特点;

?1.委托类似c/c++函数指针,但他是类型安全的

?2.委托允许将方法作为参数进行传递

?3.委托可用于定义回调方法

?4.委托可以链接在一起

?5.方法不需要与委托签名精确匹配

?

?三、声明,实例化,调用委托:

?1.声明:

?[修饰符] delegate 返回类型 委托类型名(参数列表);

?2.实例化委托对象

?委托类型名 委托对象名 = new 委托类型名(静态方法或实例方法);

?3.调用委托:

?委托对象名(实参列表);

?

?四、示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Proj6_9
{   //委托可以封装属于调用实体的方法,
    //通过委托可以简洁的调用一个方法,委托包含的只是方法的细节
    class Program
    {
        delegate double mydelegate(double x,double y);//申明委托类型
        
        class MyDeClass {  //申明含有方法的类

            public double add(double x, double y)
            {

                return x + y;
            
            }

            public double sub(double x, double y)
            {

                return x -y;

            }

            public double mul(double x, double y)
            {

                return x * y;

            }


            public double div(double x, double y)
            {

                return x/y;

            }
        
        
        }
        static void Main(string[] args)
        {

            MyDeClass obj = new MyDeClass();//创建MyDeClass实例
            
            //委托对象与obj.add()相关联
            mydelegate p = new mydelegate(obj.add);
            Console.WriteLine("5+8={0}",p(5,8));//调用委托对象p

            p = new mydelegate(obj.sub);
            Console.WriteLine("5-8={0}", p(5, 8));//调用委托对象p

             p = new mydelegate(obj.mul);
            Console.WriteLine("5*8={0}", p(5, 8));//调用委托对象p

            p = new mydelegate(obj.div);
            Console.WriteLine("5/8={0}", p(5, 8));//调用委托对象p

        }
    }
}

?

?五、运行结果:

?bubuko.com,布布扣
?

?六、解释:

?上述中,先声明委托类型mydelegate,定义一个包含委托方法的类MyDeClass,其中含有4个方法,分别实现两个参数的加、减、乘和除法,

然后在主函数中定义MyDeClass类的一个对象obj并实例化,然后定义一个mydelegate委托对象p,将其实例化并分别关联到obj的4个方法,每次实例化后都调用该委托对象.

?

?七、补充:

?1.委托类delegate是密封的,不能从Delegate类中派生委托类型,也不能从派生自定义类

?2.委托类型与类有所不同,类可以包含数据,而委托包含的只是方法的细节.

委托的使用6.9

原文:http://cb123456.iteye.com/blog/2213009

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!