今天在博客圆首页看到一篇文章:《C# 白话系列之——白话委托》
http://www.cnblogs.com/djangochina/p/3410002.html#commentform
首先,基于看这篇文章的时候有一些疑问我于是写一篇文章来释疑
OK,LET’S GO
先看代码:
public string GetMessage(string messageType)
{
string ret = ""; switch (messageType)
{
case "error":
ret = "错误消息";
break;
case "warning":
ret = "警告消息";
break;
default:
ret = "未知消息";
break;
}
return ret;
}
这段代码之前说了一句:现在我们有如下一个方法,怎样把这个方法可以赋值给一个变量呢?
于是在此我便疑惑了,为什么要把一个委托赋值给一个变量?赋值给这个变量有什么必要?用于什么场景?
delegate string MessageDelegate(string messageType);
public void Test()
{
MessageDelegate myMessage = GetMessage; string ret = myMessage("error");
}
代码如上,这就是我不明白的。因为在我看来,这段代码如果要赋值给一个变量很简单
string ret = GetMessage("errro");
这样调用就可以,为何还一定要赋值给一个委托再来处理呢?
好了,接下来我们看下面的示例:
void MethodWithCallback(string param1, string param2, SampleDelegate callback)
{
callback("The string is:" + (param1 + param2).ToString());
}
这是一个方法,接下来我们再看下我们定义的委托:
public delegate void SampleDelegate(string message);
接下来实现该委托的方法:
public void DelegateMethod(string message)
{
Response.Write(message);
}
从上面这个示例来看,把一个委托赋值给一个变量这个场景是基本很少的。
而当我们希望传两个参数就希望执行某个方法的时候这个场景对于委托来说有着更多的作用
现在在来看下我们平时传两个参数希望执行某个方法时是如何调用的:
void Method(string param1, string param2)
{
Callback("The string is : " + (param1 + param2).ToString());
} public void Callback(string message)
{
Response.Write(message);
}
好了,就到这里吧。至此卖萌结束!!!
欢迎各位评论,同时有反对的请尽量给个理由,好改正问题