7

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

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

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

私は何をすべきか?

4

6 に答える 6

16

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

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

現在はそうですprivate、そしてそれがクラスの外でアクセスできない理由です。

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

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

于 2013-02-28T07:53:36.067 に答える
6

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

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

    }

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

于 2013-02-28T07:58:56.300 に答える
1

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

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

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

于 2013-02-28T07:56:33.100 に答える
0

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

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

}
于 2013-02-28T07:53:48.190 に答える