在題爲Clean Event Handlers Invocation with C# 6喬恩斯基特的C#6後,他展示瞭如何寫信對於等待方法,用C#6調用一行方法?
public void OnFoo()
{
Foo?.Invoke(this, EventArgs.Empty);
}
,而不是
public void OnFoo()
{
EventHandler handler = Foo;
if (handler != null)
{
handler(this, EventArgs.Empty);
}
}
有沒有辦法做一個班輪一樣,如果我們談論關於一種等待方法?如果我嘗試
await Foo?.Invoke();
我得到以下編譯錯誤:
The awaiter type
System.Runtime.CompilerServices.TaskAwaiter?
must have suitableIsCompleted
andGetResult
members (CS4011).
注:我使用單聲道(Xamarin Studio中OSX v5.9.5),因此編譯器的結果可能是人們可能會發生變化使用Visual Studio。
無關,你應該在.NET的東西的Windows VM代碼。在OSX上有更好的體驗。對不起主題。我不認爲你可以等待,因爲它沒有報告狀態方法。 – Botonomous
我都這樣做,我發現在OSX上工作要比在虛擬機上工作要好得多(即使有關鍵重新映射等)。還是)感謝你的建議! –
我試圖在Visual Studio中重現這一點,並沒有得到編譯器錯誤,但我得到了一個關於可能的null異常的警告。 – HaroldHues