c# - 为什么构造函数不接受可访问性较低的类的参数?

标签 c# constructor

这里是:

我有两个Forms和一个Class,我想把这个Class的实例从 通过参数(属于第二个窗体的构造函数)从 Form1 到 Form2。

public partial class Form1 : Form
{
    Class1 cl = new Class1();

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 frm_2 = new Form2(cl);
    }
}

因此,我收到以下错误:

可访问性不一致:参数类型“WindowsFormsApplication1.Class1”的可访问性低于方法“WindowsFormsApplication1.Form2.Form2(WindowsFormsApplication1.Class1)”

public partial class Form2 : Form
{
    public Form2(Class1 c)
    {
        InitializeComponent();
        Class1 c_1 = new Class1();
        c_1 = c;
    }
}

谢谢。

最佳答案

Class1 是程序集的内部类,但您正在创建一个公共(public)类的公共(public)方法,该方法将 Class1 作为参数。这就像你公开发布一则广告说“我们正在接受工作申请,但如果你已经在这里工作,你只能得到一份申请表的副本”。它没有任何意义,因此编译器不允许它。

关于c# - 为什么构造函数不接受可访问性较低的类的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15256208/

相关文章:

c# - 使用模板 10 在 UWP 用户控件中进行数据绑定(bind)

c++ - 使用 = 构造新变量

c# - 如何让重载的构造函数同时调用默认构造函数和基构造函数的重载?

constructor - 不可变(数据)类上的多个构造函数

带 header 的 C++ 委托(delegate)构造函数

c# - 如何正确删除数据库中的记录

c# - 如何在 C# 9 中复制/克隆记录?

c# - 通过 XAML 绑定(bind)将自定义对象传递给 UserControl

c# - 如何在 MSchart 的 AxisX 上显示自定义范围内的标签?

Delphi - 智能指针构造函数的奇怪行为