PlaceHolderMsg.Controls.Add(new LiteralControl("<span style=\"color:red;\">"+sMsg+"</span>"));
}
private void SayHello(string sHello)
{
sHello = sHello==null ? sHello : "Hello,My Delegate.<br />";
PlaceHolderMsg.Controls.Add(new LiteralControl("<span style=\"color:#036;\">" + sHello + "</span>"));
}
页面中只含有一个PlaceHolder
<asp:PlaceHolder ID="PlaceHolderMsg" runat="server"></asp:PlaceHolder>
为什么会输出这个结果:
MsgDelgate MsgDelegate1 = new MsgDelegate(SayHello);
MsgDelegate1 += MsgOut;
这个例子中,委托在连续地做事情,MsgDelegate1先后受到SayHeloo和MsgOut的“委托”,所以在DoSomething(2, 5, MsgDelgate1)中,MsgDelgate1只被调用一次就可以输出两样东西,做完了两件事情。
所以结果就那样了
什么时候使用委托:
实际上,在这个示例中,SayHello是一个完全没意义的函数,看这一行sHello = sHello==null ? sHello : "Hello,My Delegate.";
这一行指出了,如果传入的参数为null,那么就让它为null吧,如果不为null,就让它为"Hello,My Delegate"吧
也就是说,无论传入何种参数,最后输出的都是"Hello,My Delegate"了。