簡體   English   中英

成員由於保護級別錯誤而無法訪問

[英]Member is inaccessible due to its protection level error

在本主題中連接如何將我的班級中的字符串連接到表單

我試圖做與他們的答案相關的解決方案(特別是傑里米爵士的回答),但這個錯誤不斷出現

“KeyWord.KeyWord.keywords”由於其保護級別而無法訪問

KeyWords.cs 的代碼:

namespace KeyWord
{
    public class KeyWord
    {
        String[] keywords = { "abstract", "as", "etc." };

    }
}

main.cs 的代碼

// Check whether the token is a keyword. 
var keyboardCls = new KeyWord.KeyWord();
String[] keywords = keyboardCls.keywords;

for (int i = 0; i < keywords.Length; i++)
{
    if (keywords[i] == token)
    {
        // Apply alternative color and font to highlight keyword.        
        rtb.SelectionColor = Color.Blue;
        rtb.SelectionFont = new Font("Courier New", 10, FontStyle.Bold);
        break;
    }
}

我應該怎么辦?

您需要將keywords定義為 public

public String[] keywords = { "abstract", "as", "etc." };

目前它是private ,這就是為什么不能在課堂外訪問。

訪問修飾符(C# 編程指南)

類成員,包括嵌套類和結構,可以是 public、protected internal、protected、internal 或 private。 類成員和結構成員(包括嵌套類和結構)的訪問級別默認為私有

請改用此代碼:

public class KeyWord
    {
        String[] keywords = { "abstract", "as", "etc." };

    }

變量的保護級別默認為private 一個好的做法是為類中的成員使用屬性。

您應該為關鍵字創建一個屬性,如下所示

public String[] Keywords
{
get{return keywords;}
}

它違反保護,因為變量默認是私有的

嘗試公開字符串數組:

public class KeyWord
{
    public String[] keywords = { "abstract", "as", "etc." };

}

您需要使用“public”關鍵字定義您的類

請確保與公共訪問說明符一樣添加構造函數。 這可能是導致此類錯誤的原因。 例子 :

Customer() {
this.CustomerId = ++counter;
}
Change it to : 
public Customer() {
this.CustomerId = ++counter;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM