嘗試在事件處理程序內呼叫在 GUI 外部宣告的 GUI當元素的非靜態方法時類時,開發人員可能會遇到錯誤訊息「需要物件參考才能存取非靜態欄位、方法或屬性''..."
發生此錯誤是因為事件處理程序需要類別的實例來存取其方法和欄位。預設情況下,GUI 元素需要先建立類別的實例,然後才能使用它們,並且由於這些回調被定義為任何類別外部的獨立函數,因此它們缺少必要的物件參考。
要解決此問題,請考慮兩個選項:
public static void StartClick(object obj, EventArgs args) { // Non-static members can be accessed directly }
MainClass instance = new MainClass(); btn.Clicked += instance.StartClick; btn_stop.Clicked += instance.StopClick;
這些選項之間的選擇取決於預期的應用程式設計。出於可測試性和可維護性的考慮,全域靜態變數可能是不受歡迎的。另一方面,建立一個類別的多個實例可能是不必要的。了解錯誤訊息背後的原因使軟體工程師能夠就可訪問性和設計模式做出明智的決策。
以上是在 GUI 事件處理程序中使用非靜態方法時,為什麼會出現「需要物件參考...」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!