您的位置:首页 > 编程语言 > C#

c#委托的通俗解释--实例透析委托的骨架

2010-12-03 15:30 295 查看
学习了委托,看了几个例子,在这里写出自己的看法,如果有什么不正确的理解 还望您能指出。2010-12-03

顾名思义"委托" 有中介之意,也就是说通过一个中间人搭线链接头和尾,距离来说就是说比如你想进皇宫见皇帝做生意,那么你需要太监带你进去,那么“委托”就是太监,你和他不会有任何交流,只是把你自己交给他,然后他把你带进去,等你见了皇帝之后,才开始做生意。

下面是一个例子:

namespace Vczx.ProCSharp.Exc
{
public class MyDelegate
{
public static void MultiplyBy2( double value )
{
double result =  value * 2;
Console.WriteLine( "Multiplying by 2: {0} gives {1}", value, result );
}

public static void Squre( double value )
{
double result = value * value;
Console.WriteLine( "Squaring: {0} gives {1}", value, result );
}
}

delegate void MathsOp( double x );

class Start
{
[STAThread]
static void Main(string[] args)
{
MathsOp operation = new MathsOp( MyDelegate.MultiplyBy2 );
operation += new MathsOp( MyDelegate.Squre );
double x = 1.23;
operation( x );

operation -= new MathsOp( MyDelegate.MultiplyBy2 );
operation( x );

Console.Read();
}
}
}


上例输出:输出:
Multiplying by 2: 1.23 gives 2.46
Squaring: 1.23 gives 1.5129
Squaring: 1.23 gives 1.5129

例子中可以看出,定义了委托之后,在创建委托时把方法作为委托的参数(MathsOp operation = new MathsOp( MyDelegate.MultiplyBy2 )),在引用时委托把参数传给方法执行操作(operation( x )),也就是说委托至始至终就是传递,来回传递。需要注意的是,委托的定义需要在空间namespace之内,在类class之外。上例中的委托有“-=”和“+=”运算符,这是多路广播委托,也就是说委托可以用这两个运算符来添加或移除参数,委托时可以有多个参数的,也就是说通过委托可以同时执行多个方法。

参考:/article/4864938.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: