匿名方法支援泛型參數,兩種形式:
class SomeClass
{
delegate void SomeDelegate(T t);
public void InvokeMethod(T t)
{
SomeDelegate del = delegate(T item) { /* 使用 item */ };
del(t);
}
}
class SomeClass
{
delegate void SomeDelegate(T t);
public void InvokeMethod()
{
SomeDelegate del = delegate(int number) { MessageBox.Show(number.ToString()); };
del(3);
}
}
SafeLabel 完整程式碼自動處理跨執行緒 Text 存取的標籤控件:
public class SafeLabel : Label
{
delegate void SetString(string text);
delegate string GetString();
public override string Text
{
set
{
if (InvokeRequired)
{
SetString setTextDel = delegate(string text) { base.Text = text; };
Invoke(setTextDel, new object[] { value });
}
else base.Text = value;
}
get
{
if (InvokeRequired)
{
GetString getTextDel = delegate() { return base.Text; };
return (string)Invoke(getTextDel, null);
}
return base.Text;
}
}
}
匿名方法捕獲 value/無參數,編譯器自動生成封閉類別封裝外部變數,極度簡化跨執行緒 UI 程式碼。