c#中使用委托

来源:互联网 发布:看门狗2优化补丁下载 编辑:程序博客网 时间:2024/05/16 17:56

对于委托的定义,我的理解就是封装一类型的方法,然后根据传递进的参数,由系统来进行选择调用。

 

申明:

delegate void voidOperation(uint x)

这申明了一个委托,与这个委托匹配的方法格式为:不返回任何结果,参数。

delegate int intOperation(int x,int y)

申明一个委托,与这个委托匹配的方法格式为:返回一个整数,需要传入两个整型的参数。

delegate bool boolOperation(object o1,object o2)

申明一个委托,与这个委托匹配的方法格式为:返回一个bool型参数,需要传入两个对象参数。

 

使用方法:

要使用委托,首先需要拥有一个与委托相匹配的方法,然后将方法传入委托,然后通过委托得到结果。

 

示列:

------类-------

class test1

{

       public int m;

       public int n;

 

       //比较大小

        public static bool CompareOver(test1 bt1, test1 bt2)
        {
            if ((bt1.m + bt1.n) >= (bt2.n + bt2.m))
            {
                return true;
            }
            else
            {
                return false;
            }
        }

}

 

---------申明委托------------

 public delegate bool compareop(test1 o1, test1 o2);

 

---------使用委托------------

test1 t1 = new test1();

test2 t2 = new test2();

compareop cp = new compareop(test1.CompareOver)

bool label = cp(t1,t2);

 

--------说明--------------

首先test1类中有一个比较大小的静态方法,其方法与申明的委托一致(因此可以使用委托),

当实例化委托时将这个方法传入,也就是说委托cp具有了test1类中的比较的方法,

这时当你传入两个实列化的对象后,得出结果。

 

注意事项:

所以从上面可以看出,委托是将方法作为参数传入,然后可以通过传入参数得到结果。

比较常用的就是跨线程调用时用到委托,

还有就是当你不知道,到底传入什么参数,利用什么方法,来进行操作,你可以设计一个委托来封装一个标准的接口,然后对于想进行操作的类来说,他只要按照委托的格式设计一个方法就可以进行操作了。当然这个也可以用接口来实现。

原创粉丝点击