【问题标题】:inaccessible due to its protection level C# [duplicate]由于其保护级别C#而无法访问[重复]
【发布时间】:2021-10-22 20:12:59
【问题描述】:

我在 'Form1' 中定义了一个按钮,我想对 'Form 2' 中的按钮进行一些更改。 当我在 Form2 中获得 Form1 的样本时,出现错误 “Form 1 由于其保护级别而无法访问”

表格2中的代码是

 Form1 set_form2 = Form1.set;
            set_form2.Enabled = true; 

【问题讨论】:

标签: c#


【解决方案1】:

“保护级别”是指特定类成员对该类之外的上下文的可访问性。

C# 中可用的保护级别类型有 privateprotectedinternalprotected internal公开

在编写类时指定保护级别。见下文:

class Class1
{
    private int privInt;
    protected int protInt;
    public int pubInt;
}

Private 成员只能从该类中访问。所以如果我用这样的函数扩展类:

class Class1
{
    private int privInt;
    protected int protInt;
    public int pubInt;

    public int getPrivInt()
    {
        return privInt;
    }
}

我可以访问它。但是,如果我尝试从课堂外访问它,就像这样:

var v = new Class1();
int i = v.privInt;

该代码将失败。

如果我将其标记为公开,那么上面的代码就可以了。

在您的情况下发生的情况是,您尝试访问的成员正在使用保护级别,这使得其他类无法访问。它可能是私有的或受保护的。

注意,如果在定义成员时没有指定保护级别,默认是私有的。

为了让您的代码正常工作,您需要将您的成员标记为公开(通常是不好的做法),或者使用标记为公开的函数或属性封装对该成员的访问(通常是好的做法)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    相关资源
    最近更新 更多