昨天我遇到了這種情況,它一直在啃我。編譯器不會爲我的DoThis方法使用對函數的引用,因爲它會調用一個Action,這對我來說是一個具有'void'返回類型的委託。功能參考如何與動作不同<T>
DoThis函數的這個Action參數真的在做什麼?
public class testit
{
// Call DoThis with just a function reference. Should not work, but does.
public void DoThisThing1() {
DoThis(this.thing1);
}
// Call DoThis with an action. This is correct.
public void DoThisThing2() {
DoThis(new Action<string, string>(this.thing2));
}
private void DoThis(Action<string, string> thing)
{
// Do some common things here.
// Invoke Action
thing.Invoke("1", "2");
// Do other things.
}
private void thing1(string p1, string p2){}
private void thing2(string p1, string p2){}
}
問題是什麼?我很困惑。 –
順便說一句,在C#中沒有「函數引用」這樣的東西; 'thing1'是*方法組*。 –
我不知道該怎麼稱呼「方法組」。爲了澄清,我想知道爲什麼使用方法組而不是操作沒有給我一個編譯器錯誤或警告。 – Jpirok