VB.NET代碼:F#如何AddHandler的一致好評VB.NET
AddHandler TheGrp.DataChanged, AddressOf theGrp_DataChange
所以,我該怎麼辦同在F#?
theGrp.DataChanged.AddHandler(X.theGrp_DataChange)
錯誤1這個函數的參數太多,或者在上下文中使用的其中一個功能預計不會
VB.NET代碼:F#如何AddHandler的一致好評VB.NET
AddHandler TheGrp.DataChanged, AddressOf theGrp_DataChange
所以,我該怎麼辦同在F#?
theGrp.DataChanged.AddHandler(X.theGrp_DataChange)
錯誤1這個函數的參數太多,或者在上下文中使用的其中一個功能預計不會
的嘗試theGrp.DataChanged.AddHandler(fun o e -> X.theGrp_DataChange(o, e))
。 AddHandler
的簽名表示它需要一個委託,所以您可以顯式創建一個(通過像DataChangedEventHandler(fun o e -> X.theGrp_DataChange(o, e))
之類的東西),或者在給定函數定義時讓編譯器隱式添加委託構造函數,但不能只使用方法本身。
另外,如果你不想明確創建一個lambda表達式,你也可以寫(在這種情況下,該功能通過簽署委託要求的簽名相匹配,所以它應該工作):
theGrp.DataChanged.AddHandler(DataChangedEventHandler(x.theGrp_DataChanged))
另外,如果你不需要發件人的說法,你可以聲明theGrp_DataChanged
方法只拿事件參數參數,然後寫只是:
theGrp.DataChanged.Add(x.theGrp_DataChanged)