/**
* Desc: C#, delegate关键词 使用方式 测试
* Env: VS2010 With SP1
* Auth: Kagula
* Date: 2013-03-18
* Note:
* [1]匿名(lambda)函数里不能使用带ref/out修饰符的UI控件对象,
* 比如说本例中的label1对象。
* Ref:
* [1]《Delegate Class》
* http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k(SYSTEM.DELEGATE);k(DELEGATE);k(DevLang-CSHARP)&rd=true
* */
public delegate void MyDelegateType(ref String s,int[] arrayInt,Label label);
public void FuncWithParam(ref String s, int[] arrayInt, Label label)
{
for (int i = 0; i < arrayInt.Length; i++)
{
s += " " + i;
}
label.Content = s;//label is Label.
}
public MainWindow()
{
InitializeComponent();
//新建delegate类型对象
MyDelegateType t = new MyDelegateType(FuncWithParam);
//准备入口参数
String sT = "测试ref修饰符形参能否使用";
int[] aInt = new int[] {1,2,3};//测试数组的传入
//调用delegate,方式一
//t(ref sT, aInt,label1);
//调用delegate,方式二
Dispatcher.BeginInvoke(t , new object[]{sT,aInt,label1});
}