C# 程式碼錯誤:「需要物件參考才能存取非靜態欄位、方法或屬性」
提供的程式碼片段在類別 2(實作演算法)中引發錯誤,原因是嘗試從靜態方法 Main()
存取非靜態方法 GetRandomBits()
。
在 Main()
方法中,Population[i].bits = GetRandomBits();
這一行導致了錯誤。問題在於 GetRandomBits()
是 Program
類別中的非靜態方法,而 Main()
是靜態方法。
解:靜態與非靜態
解決方法:
Program
類別的實例,並從該實例呼叫 GetRandomBits()
。 <code class="language-csharp">// 创建 Program 实例 Program p = new Program(); // 从实例访问非静态方法 Population[i].bits = p.GetRandomBits();</code>
GetRandomBits()
設定為靜態:透過在方法宣告前加上 static
關鍵字,將 GetRandomBits()
方法修改為靜態方法。 <code class="language-csharp">public static string GetRandomBits() { // 在此处实现方法逻辑... }</code>
選擇哪一種方法取決於你的程式設計和 GetRandomBits()
方法的用途。如果 GetRandomBits()
需要存取類別的其他非靜態成員,則必須使用第一種方法(建立實例)。如果 GetRandomBits()
不需要存取類別的非靜態成員,則第二種方法(將其設為靜態)會更簡潔。 記住,過度使用靜態方法可能會降低程式碼的可測試性和可維護性。
以上是為什麼C#中靜態方法呼叫非靜態方法時出現「需要物件參考」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!