首頁 > 後端開發 > C++ > 在 GUI 事件處理程序中使用非靜態方法時,為什麼會出現「需要物件參考...」?

在 GUI 事件處理程序中使用非靜態方法時,為什麼會出現「需要物件參考...」?

DDD
發布: 2025-01-02 16:45:38
原創
481 人瀏覽過

Why Do I Get

錯誤:「需要物件參考...」

嘗試在事件處理程序內呼叫在 GUI 外部宣告的 GUI當元素的非靜態方法時類時,開發人員可能會遇到錯誤訊息「需要物件參考才能存取非靜態欄位、方法或屬性''..."

原因

發生此錯誤是因為事件處理程序需要類別的實例來存取其方法和欄位。預設情況下,GUI 元素需要先建立類別的實例,然後才能使用它們,並且由於這些回調被定義為任何類別外部的獨立函數,因此它們缺少必要的物件參考。

要解決此問題,請考慮兩個選項:

  1. 將回調和變數設為靜態:將回調方法宣告為靜態,並將類別的實例變數也宣告為靜態。這允許直接存取這些元素,而不需要物件參考。
public static void StartClick(object obj, EventArgs args) {
    // Non-static members can be accessed directly
}
登入後複製
  1. 建立實例:建立類別的實例並分配事件其方法的處理程序。
MainClass instance = new MainClass();
btn.Clicked += instance.StartClick;
btn_stop.Clicked += instance.StopClick;
登入後複製

這些選項之間的選擇取決於預期的應用程式設計。出於可測試性和可維護性的考慮,全域靜態變數可能是不受歡迎的。另一方面,建立一個類別的多個實例可能是不必要的。了解錯誤訊息背後的原因使軟體工程師能夠就可訪問性和設計模式做出明智的決策。

以上是在 GUI 事件處理程序中使用非靜態方法時,為什麼會出現「需要物件參考...」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板