【问题标题】:Member is inaccessible due to its protection level error由于保护级别错误,成员无法访问
【发布时间】:2013-02-28 07:52:25
【问题描述】:

在这个主题内连接: 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;
    }
}

我该怎么办?

【问题讨论】:

    标签: c# .net csharpcodeprovider


    【解决方案1】:

    您需要将keywords 定义为公开

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

    目前它是private,这就是为什么不能在课堂外访问的原因。

    Access Modifiers (C# Programming Guide)

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

    【讨论】:

      【解决方案2】:

      改用此代码:

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

      变量的保护级别默认为private。一个好的做法是为类中的成员使用属性。

      【讨论】:

        【解决方案3】:

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

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

        这是一种保护违规,因为变量默认是私有的

        【讨论】:

        • this 和 other 的区别回答了你不能在你的类之外设置值,除非你定义一个 set 方法
        【解决方案4】:

        尝试将字符串数组公开:

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

          • 该类已经有一个 public 关键字。参数缺少这个关键字,而不是类。
          【解决方案6】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-08-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多