存取事件處理程序中的非靜態成員
在 C# 中,從事件處理程序中存取非靜態成員需要物件參考。然而,當遇到「存取非靜態欄位、方法或屬性需要物件參考」錯誤時,可能不清楚如何解決它。
使用事件處理程序呼叫方法時會出現此問題存取特定於實例的屬性或變數。要解決此問題,有兩個選項:
1。將成員和事件處理程序宣告為靜態
此方法涉及將計時器回呼聲明為委託事件並將成員變數聲明為類別中的靜態。這允許存取非靜態成員而不需要物件參考。但是,它引入了對全域狀態的依賴,為了可測試性和可維護性,通常不建議這樣做。
2.建立類別的實例
或者,可以建立類別的實例,並將事件處理程序指派給該實例中的方法。這會建立正確的物件參考並允許存取非靜態成員。
例如:
這兩種方法之間的選擇取決於應用程式的特定上下文。如果不關心全域狀態,則將成員和事件處理程序宣告為靜態可能是適當的選擇。但是,對於需要可測試性並避免全域狀態的場景,建議建立該類別的實例。
透過了解錯誤的根本原因和可用的解決方案,開發人員可以有效解決此問題並保持強大的了解 C# 中物件導向的程式設計原理。
以上是如何從 C# 事件處理程序中存取非靜態成員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!