在 C# 中,"需要物件參考才能存取非靜態欄位、方法或屬性" 這樣的錯誤通常發生在靜態方法試圖存取類別的非靜態成員時。
本文的錯誤出現在 Main
方法的以下程式碼行:
<code class="language-c#">Population[i].bits = GetRandomBits();</code>
問題在於 GetRandomBits
方法,它在 Program
類別中宣告為非靜態方法。然而,Main
方法被定義為靜態方法,這意味著它只能存取類別的靜態成員。
有兩種方法可以解決此錯誤:
1. 建立類別的實例:
靜態方法無法直接存取非靜態成員。要從靜態方法存取非靜態方法或屬性,需要先建立類別的實例,然後透過該實例呼叫方法或存取屬性。例如:
<code class="language-c#">// 创建 Program 类的实例 Program p = new Program(); // 通过实例调用 GetRandomBits 方法 Population[i].bits = p.GetRandomBits();</code>
2. 將方法設為靜態:
或者,您可以在 Program
類別中聲明 GetRandomBits
方法時新增 static
關鍵字,將其設為靜態方法。這樣,靜態 Main
方法就可以直接存取 GetRandomBits
方法,而無需建立實例。例如:
<code class="language-c#">public static string GetRandomBits() { // 方法实现 }</code>
透過上任一方法,您都可以消除錯誤,並使 Main
方法能夠正確存取 GetRandomBits
方法。
以上是為什麼 C# 會拋出「非靜態欄位、方法或屬性需要物件參考」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!