新建委托的几种方式

正常的话

我们建立一个事件委托,是否有返回值,名称,参数类型

public delegate void Delobj(string name1,string name2);

声明好委托之后我们可以对委托进行赋值,也就是传递方法给委托

public void func1(string name1,string name2){}

Delobj do=func1;

或者 Delobj do=new Delobj(func1);

然后执行这个委托

string name1="张三";

string name2="李四";

do(name1,name2);

如果需要对这个委托添加其他方法,那么可以  do+=func2; do+=func3;  注意 第一次实例化的时候要用 =  而不是+=。

如果不想使用里面的一个方法,那么可以使用 do-=func2;这样就会移除这个方法

 

以上就是我们建立委托最普通的方式;

事件的话,就是委托的一个实例对象,比如

public event Delobj eventObj;

在拥有事件的类中,事件拥有委托的所有功能,但是在类的外面,我们无法直接调用事件,只能通过其他的方式来触发

可以参考一下我写的经典的事件触发模式。

 

其他建立委托的方式

建立一个匿名无返回值的委托类型

public  void changeProcess(object send,ValueArgs e)
        {
            Action delobj = () => this.progressBar1.Value = e.value;

        }

建立一个匿名有参数的委托类型,但是参数类型必须要声明

 Action<int,string> delobj = (x,y) => { this.progressBar1.Value = x;this.button1.Text = y; };

 

或者我们可以建立有返回值的匿名无参数委托类型,注意 必须声明一个返回值类型

Func<string> fuobj = () => { string str = "test";return str; };

或者建立有返回值有参数的委托类型,最后一个是返回值类型

Func<string,int> fuobj = (x) => { int y = Convert.ToInt32(x); return y; };

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值