程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C# 2.0:使用匿名方法、迭代程序和局部類來創建優雅的代碼(12)

C# 2.0:使用匿名方法、迭代程序和局部類來創建優雅的代碼(12)

編輯:關於C語言

一般匿名方法

匿 名方法可以使用一般參數類型,就像其他方法一樣。它可以使用在類范圍內定義 的一般類型,例如:

class SomeClass<T>
{
  delegate void SomeDelegate(T t);
  public void InvokeMethod(T t)
  {
   SomeDelegate del = delegate(T item){...}
    del(t);
  }
}

因為委托可以定義一般參數,所以匿 名方法可以使用在委托層定義的一般類型。可以指定用於方法簽名的類型,在這 種情況下,方法簽名必須與其所指派的委托的特定類型相匹配:

class SomeClass
{
  delegate void SomeDelegate<T>(T t);
  public void InvokeMethod()
  {
   SomeDelegate<int> del = delegate(int number)
                {
                 MessageBox.Show(number.ToString());
                };
   del(3);
  }
}

匿名方法示例

雖然乍一看 匿名方法的使用可能像一種另類的編程技術,但是我發現它是相當有用的,因為 在只要一個委托就足夠的情況下,使用它就可以不必再創建一個簡單方法。圖 10 展示了一個有用的匿名方法的實際例子 — SafeLabel Windows 窗體控件。

Figure 10The SafeLabel Control

public class SafeLabel : Label
{
  delegate void SetString(string text);
  delegate string GetString();
  override public 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);
     }
     else
       return base.Text;
   }
  }
}

圖 10

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved