匿名方法,event事件,多播委托

匿名方法

定义:没有名字的方法称为匿名方法。

void Start

{

        Action test = delegate()

        {

                   ..........

        }


}

这样就生成了一个匿名方法,直接调用test()就可以执行这个方法。

如果带有参数就直接传入参数就行,Action委托的用法在之前的文章有提到。

event事件

定义:本质是委托,但是只能作为类的成员,无法被外部访问。(定义委托)

如:

public event Action test;(注意定义的时候不能放在函数内部,比如start等等函数里面)

public Action test1;

void Start

{

       
}

如果在一个类的外面(假设上面的函数在MyClass类里面)

public class MyClass1

{

       public MyClass myclass=new MyClass()(实例化)

       

void Start

{

        test += Test1;(在外部类里面必须+=才能赋值,不能直接=)

        test1=Test1;(普通的委托在外部可以直接=赋值)
}

public void Test1()

{

          ...........

}

}

如果是delegate委托

public delegate void Test();

event Test test;

void Start

{

        test = Test1;


}

public void Test1()

{

          ...........

}

多播委托

定义:指的是赋予一个委托多个方法,并且是使用+=和-=来添加和撤销方法。

多播委托的实现特别简单。

现在用Action委托来举例子。

void Start

{

        Action test = Test1;

        test+=Test2;(这样就把Test2添加进去了)

        test-=Test1;(这样就把Test1移除掉了)
}

public void Test1()

{

          ...........

}

public void Test2()

{

          ...........

}

注意,委托所以引用类型,默认值是null,如果里面什么都没有,那么就会报空异常。

比如:

void Start

{

        Action test = Test1;

        test+=Test2;(这样就把Test2添加进去了)

        test-=Test1;(这样就把Test1移除掉了)

        test-=Test2;(现在移除了里面的两个方法)

        test();(调用这个函数,报空)
}

public void Test1()

{

          ...........

}

public void Test2()

{

          ...........

}

所以一般在使用时,一般要加上:

if(test!=null)

{

        test();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值