委託是一個函數指針。所以它指向一個符合標準(參數和返回類型)的函數。如果有多個方法滿足委託標準,委託人將指出兩個什麼函數?
這引發了一個問題(對我來說),如果有多於一種方法具有完全相同的返回類型和參數類型,那麼委託會指向什麼函數?班上第一個出現的功能是什麼?
謝謝
委託是一個函數指針。所以它指向一個符合標準(參數和返回類型)的函數。如果有多個方法滿足委託標準,委託人將指出兩個什麼函數?
這引發了一個問題(對我來說),如果有多於一種方法具有完全相同的返回類型和參數類型,那麼委託會指向什麼函數?班上第一個出現的功能是什麼?
謝謝
確切的方法是在創建委託時指定的。
public delegate void MyDelegate();
private void Delegate_Handler() { }
void Init() {
MyDelegate x = new MyDelegate(this.Delegate_Handler);
}
謝謝。我的天真告訴我,我做的事情有點不對...... – dotnetdev 2009-04-19 22:12:52
如果有重載,繼承等等,它會比這更復雜。 – 2009-04-19 22:13:11
正如Henk所說,創建委託時指定了該方法。現在,有多種方法可以滿足要求,原因有兩個:
Object
的方法創建Action<string>
您可以通過使方法通用來重載方法,例如,
static void Foo() {}
static void Foo<T>(){}
static void Foo<T1, T2>(){}
的規則變得非常複雜,但他們在C#3.0規範的6.6節中規定。請注意,繼承也會使事情變得棘手。
因此它指向一個滿足條件(參數和返回類型)的函數。
沒有。
對一些添加背景亨克的答案:
就像int x
是它可以包含整數的變量,委託是它可以包含函數的變量。
它指向你告訴它指向的任何函數。
EG:
// declare the type of the function that we want to point to
public delegate void CallbackHandler(string); //
...
// declare the actual function
public void ActualCallbackFunction(string s){ ... }
...
// create the 'pointer' and assign it
CallbackHandler functionPointer = ActualCallbackFunction;
// the functionPointer variable is now pointing to ActualCallbackFunction
它*提出了*問題。乞討的問題是提出一個以其結論爲前提的論點。 – 2009-04-20 02:49:22