在此主题中连接: 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;
}
}
我该怎么办?
答案 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;
}