首頁 > 後端開發 > C++ > 為什麼 C# 會拋出「非靜態欄位、方法或屬性需要物件參考」?

為什麼 C# 會拋出「非靜態欄位、方法或屬性需要物件參考」?

Linda Hamilton
發布: 2025-01-22 05:31:09
原創
216 人瀏覽過

Why Does C# Throw

C# 例外:"需要物件參考才能存取非靜態欄位、方法或屬性"

在 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板