委托的用法浅谈
原创
©著作权归作者所有:来自51CTO博客作者471237003的原创作品,请联系作者获取转载授权,否则将追究法律责任
委托是一种引用类型,它可以用来封装方法,并且可以是方法在形式上以参数进行传递。总之功能上给人很强大的感觉。
委托的签名与方法的签名需要匹配,但是不是必须,因为参数如果是需要匹配的类型的子类,这种声明的委托也是可行的。
委托的实质:委托就是用来封装方法的,可以把方法当做参数进行传递,在新声明的方法中调用该委托,以此来实现某一方法的内容。
委托可以声明在类内,也可以声明到类外,声明在类内时,如果需要在外面访问,需要对委托加上Public的访问修饰符。
声明方法:delegate void Dl(int i); 这样就可以声明一个委托。
接着:定义一个如委托签名相匹配的方法(为了演示委托的用法)。
static void Fuc(int i)//定义成非静态的也行
{
Console.WriteLine(i);
}
接着就可以使用了
Dl dl = new Dl(Fuc);
或者 Dl dl = Fuc;//这种声明更加简便,因为编译器具有推断功能,将new的实现隐藏起来了。
委托的用法不止这么简单,委托和委托之间还可以相加。
先在内外定义几个方法
void FFF(int i)
{
Console.WriteLine("FFF");
Console.WriteLine(i);
}
void FF(int i)
{
Console.WriteLine("FF");
Console.WriteLine(i);
}
void F(int i)
{
Console.WriteLine("F");
Console.WriteLine(i);
}
这样在Main方法中:
Program p = new Program();
Dl dl1 = p.F;
//Dl dl = new Dl(p.F);
Dl dl2 = p.FF;
Dl dl3 = p.FFF;
Dl dl4 = dl1 + dl2 + dl3;
Dl4( 2 );
执行的结果是dl1、dl2、dl3分别被传入2数值,然后分别对其进行运算。
不仅如此,委托还可以用+=运算符,Dl4 += Fuc;运算方式与上面的运算方法相似。
运用委托可以让方式当做参数进行传递。
在声明方法时
static void Da(Dl dl1)
{
dl(100);
}
Dl dl5=Da;
dl5(dl1);
这样方法就被当做参数进行传递。
上一篇:扩展方法浅谈
下一篇:正则表达式的常用表示
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
浅谈委托职场 休闲 委托
-
浅谈javascript事件委托
浅谈javascript事件委托
职场 JavaScript 休闲 浅谈javascript事件委托 -
浅谈事件委托
浅谈事件委托
事件委托 html 绑定事件 -
浅谈cin 的用法
cin浅谈
cin -
C#异步委托的用法
Invoke、BeginInvoke、EndInvoke。第一个方法是委托
c# asynchronous thread string callback