的變量對於我的回答是有道理的,但要記住的定義是非常重要的代表。根據MSDN:
委託是一種引用類型,可用於封裝指定方法或匿名方法。
代表是參考?!?!
如果你熟悉C++,你知道的另一種說法參考是指針。 (事實上,C++開發人員通過函數指針獲取類似的功能給C#委託。)
委託人被引用的意義是什麼?在通用類型系統提供的基本構造中,.NET Framework有另一個引用類型:class
。說代表是參考類型就像說代表是類。讓我們回顧一下我們如何使用類。
有3個步驟,你需要遵循之前,你可以使用一個類的實例:
- 類型聲明:
class Test { public Action Yaser; }
- 實例聲明:
class Test testClassObject;
- 實例化:
testClassObject = new Test();
(通常,我們結合了實例聲明和實例化)。
我們說代表是類。因此,代表使用遵循相同的模式:
- 類型聲明:
public delegate void Mhd();
- 實例聲明:
public Mhd myMhd;
- 實例化:
myDelegateField = new Mhd(SomeMethod);
別急,什麼是SomeMethod
?真的,沒關係。我們所知道的是,它的簽名必須與Mhd的簽名相匹配。換句話說,void SomeMethod()
讓我們檢查並修復您的類聲明。一種可能的實現如下所示:
class Test
{
public Action Yaser; // instance declaration
public delegate void Mhd(); // type declaration
public Mhd myMhd; // instance declaration
public Test()
{
// instantiation
this.myMhd = new Mhd(this.SomeMethod);
}
private void SomeMethod()
{
// your implementation
}
}
非常感謝但 實例化必須myMhd =新MHD(的someMethod);對? – Mhd 2014-10-03 07:35:11
是的,它顯示在代表項目符號中,但我編輯了該類來完成示例:) – 2014-10-06 21:58:08