這編譯但第二個方法被標記爲「函數在所有路徑上遞歸」。並調用它會導致StackOverflowException。 Intellisense(w/ReSharper)提供了作爲屬性的Invoke。Func <T>上的Invoke屬性是什麼?
public class Class1
{
public void MyMethod(string value)
{
Console.WriteLine(value);
}
public void MyMethod(Func<string> getValue)
{
MyMethod(getValue.Invoke);
}
}
將其更改爲這個工程按預期:
public void MyMethod(Func<string> getValue)
{
MyMethod(getValue.Invoke());
}
這是怎麼回事?這只是Intellisense的怪異還是實際上有一個Invoke屬性?
我很熟悉方法組轉換,只是意味着在將事件添加到事件時不再需要新建事件處理程序委託。那是我唯一明白地遇到它的時候。 Intellisense不提示方法簽名令人失望。 –
@Jamie:好吧,它不是隻填寫名字,正如它通常那樣?這取決於你使它成爲方法調用。 –
ReSharper自動添加方法調用,所以我想我不應該在Intellisense上過於努力。但它很混亂,因爲通常你不能擁有一個方法和一個簽名相同的屬性。 –