由于其保护级别错误,成员无法访问

时间:2013-02-28 07:52:26

标签: c# .net csharpcodeprovider

在此主题中连接: How to connect string from my class to form

我试图做出与他们的答案相关的解决方案(特别是杰里米先生的回答),但这个错误一直出现

  

'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 个答案:

答案 0 :(得分:13)

您需要将keywords定义为公开

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

目前它是private,这就是无法在课堂外访问的原因。

Access Modifiers (C# Programming Guide)

  

类成员,包括嵌套类和结构,可以是公共的,   受保护的内部,受保护,内部或私人。访问级别   对于类成员和结构成员,包括嵌套类和   结构,默认为私有

答案 1 :(得分:6)

请改用此代码:

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

    }

默认情况下,变量的保护级别为private。一个好的做法是在课堂上为成员使用财产。

答案 2 :(得分:1)

您应该为关键字创建一个属性,如下所示

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

它是一种保护违规,因为默认情况下变量是私有的

答案 3 :(得分:0)

尝试将字符串数组设为public:

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

}

答案 4 :(得分:0)

您需要使用“ public”关键字定义您的课程

答案 5 :(得分:0)

请确保与公共访问说明符一样添加构造函数。这可能是导致此类错误的原因。 示例:

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