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# 编程指南)

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

于 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 回答
0

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

于 2018-11-13T06:48:27.530 回答
0

请确保将构造函数添加为公共访问说明符。这可能是这种错误的原因。例子 :

Customer() {
this.CustomerId = ++counter;
}
Change it to : 
public Customer() {
this.CustomerId = ++counter;
}
于 2021-04-10T03:32:20.260 回答