web-dev-qa-db-ja.com

保護レベルエラーのため、メンバーにアクセスできません

このトピック内で接続: クラスからフォームに文字列を接続する方法

私は彼らの答え(特にジェレミー卿の答え)に関連する解決策を行おうとしていますが、このエラーは表示され続けます

'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;
    }
}

私は何をすべきか?

6
user2118160

keywordsをパブリックとして定義する必要があります

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

現在はprivateであるため、クラス外ではアクセスできません。

アクセス修飾子(C#プログラミングガイド)

ネストされたクラスと構造体を含むクラスメンバーは、public、protected internal、protected、internal、またはprivateにすることができます。ネストされたクラスと構造体を含む、クラスメンバーと構造体メンバーのアクセスレベルは、デフォルトでプライベートです

13
Habib

代わりに次のコードを使用してください。

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

    }

変数の保護レベルは、デフォルトでprivateです。クラスのメンバーにプロパティを使用することをお勧めします。

6
Herks

次のようにキーワードのプロパティを作成する必要があります

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

変数はデフォルトでプライベートであるため、保護違反です

1
Sayse

文字列配列を公開してみてください。

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

}
0
Tomtom

「public」キーワードを使用してクラスを定義する必要があります

0
Mohit Yadav