在單獨的函數中呼叫計時器回呼時,可能會遇到錯誤「An object存取非靜態欄位、方法或屬性需要引用...」在靜態方法或靜態方法中存取非靜態類別成員時會出現這種情況
要解決此問題,有兩個選項:
將回調和成員變數宣告為靜態:
public static void Main (string[] args) { Timer _timer = null; static TimeSpan _millisecs; ... }
建立實例類別的:
MainClass instance = new MainClass(); btn.Clicked += instance.StartClick; btn_stop.Clicked += instance.StopClick;
這些選項之間的選擇取決於應用程式的要求。如果首選全域狀態管理,則可以使用靜態成員。或者,建立實例可以提供更好的可測試性和封裝性。
了解錯誤訊息的原因有助於做出明智的決策。發生錯誤的原因是非靜態成員需要存取物件實例,而靜態成員則不需要。
以上是如何解決在 C# 中存取非靜態成員時出現「需要物件參考」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!