在物件導向程式設計中,非靜態成員,例如實例變數和方法,需要物件實例已存取。如果您在沒有先建立物件的情況下嘗試存取這些非靜態成員,您將遇到錯誤:「存取非靜態成員需要物件參考。」
解決此錯誤的一種方法是將受影響的成員設為靜態。靜態成員與類別本身相關聯,而不是與單一物件相關聯。這意味著無需物件實例即可存取它們。
例如,在您提供的程式碼片段中,StartClick 和 StopClick 方法是非靜態的。要修復錯誤,您可以按如下方式修改這些方法:
public static void StartClick(object obj, EventArgs args) {} public static void StopClick(object obj, EventArgs args) {}
但是,這會將全局狀態引入您的應用程序,這通常不被認為是好的做法。
解決錯誤的另一種方法是建立該類別的實例。這允許您透過實例引用存取非靜態成員。
例如,您可以在存取 StartClick 和 StopClick 方法之前加入以下程式碼:
MainClass instance = new MainClass(); btn.Clicked += instance.StartClick; btn_stop.Clicked += instance.StopClick;
透過建立實例MainClass 的,你有一個可用於存取非靜態成員的物件參考。
的決定是否使用靜態成員或物件實例取決於應用程式的特定要求。如果避免全域狀態至關重要,那麼建立物件實例是首選方法。這為您的程式碼提供了更好的封裝性和可測試性。
以上是是什麼原因導致「需要物件參考」錯誤以及如何解決?的詳細內容。更多資訊請關注PHP中文網其他相關文章!