實例與靜態:揭露常見的初始化錯誤
在軟體開發中,類別通常包含實例和靜態成員。實例成員與類別的各個實例相關聯,而靜態成員在所有實例之間共用。
使用實例成員時,了解欄位初始值設定項的限制非常重要。欄位初始值設定項用於在建立實例時為實例欄位賦值。但是,如錯誤訊息「欄位初始值設定項無法引用非靜態欄位、方法或屬性」所述,欄位初始值設定項無法引用非靜態成員。
原始程式碼分析
您提供的程式碼示範了此限制。 Service 類別包含一個實例欄位儲存庫和一個嘗試呼叫實例儲存庫上的非靜態方法 GetDinner 的欄位初始值設定項。這會引發錯誤,因為欄位初始值設定項目在實例完全初始化之前嘗試存取非靜態成員。
解
有兩種常見的解題本期:
最佳實踐
兩種解決方案都是有效的,但構造函數初始化通常被認為是首選方法。這是因為它提供了更大的靈活性,並允許您根據需要初始化其他實例欄位。 透過避免對非靜態成員使用欄位初始值設定項,您可以防止初始化錯誤並確保程式碼按預期運行.以上是為什麼我的欄位初始值設定項無法存取非靜態成員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!