首頁 > 後端開發 > C++ > 為什麼我無法使用實例參考訪問C#中的靜態成員?

為什麼我無法使用實例參考訪問C#中的靜態成員?

Mary-Kate Olsen
發布: 2025-01-27 15:11:11
原創
996 人瀏覽過

Why Can't I Access Static Members in C# Using Instance References?

在 C# 中存取靜態成員:避免實例引用錯誤

在 C# 中,存取靜態成員需要了解它們的獨特行為。 與屬於特定物件的實例成員不同,靜態成員屬於類別本身。 嘗試使用實例引用存取靜態成員會導致錯誤:「無法使用實例引用存取成員 ''。」

靜態成員存取的正確語法:

存取靜態成員的正確方法是透過類別名,而不是類別的實例。

我們舉個例子來說明:

<code class="language-csharp">// Static class members
namespace MyDataLayer.Section1
{
    public class MyClass
    {
        public class MyItem
        {
            public static string Property1 { get; set; }
        }
    }
}</code>
登入後複製

不正確的存取(使用實例引用):

<code class="language-csharp">using MyDataLayer.Section1;

public class MyClass
{
    protected void MyMethod()
    {
        MyClass.MyItem oItem = new MyClass.MyItem(); 
        someLiteral.Text = oItem.Property1; // Error!
    }
}</code>
登入後複製

正確存取(使用類別名稱):

<code class="language-csharp">using MyDataLayer.Section1;

public class MyClass
{
    protected void MyMethod()
    {
        someLiteral.Text = MyDataLayer.Section1.MyClass.MyItem.Property1; // Correct!
    }
}</code>
登入後複製

替代方案:刪除 static 修飾符

如果需要透過實例存取成員,請從成員宣告中刪除 static 關鍵字:

<code class="language-csharp">public class MyItem
{
    public string Property1 { get; set; } // No longer static
}</code>
登入後複製

這使得 Property1 成為實例成員,允許使用 oItem.Property1 進行存取。

遵循這些準則,您可以避免在 C# 中使用靜態成員時出現常見錯誤,並確保您的程式碼正常運作。

以上是為什麼我無法使用實例參考訪問C#中的靜態成員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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