这里是:

我有两种形式和一个类,我想从
通过参数从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.Form2.Form2(WindowsFormsApplication1.Class1)”相比,参数类型“ WindowsFormsApplication1.Class1”的访问性较差

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


谢谢。

最佳答案

您已将Class1定义为internal

internal class Class1
{
}


或(相同):

class Class1
{
}


但是您有一个public方法(在本例中为构造函数),该方法接受Class1类型的参数。 public表示在任何其他程序集中都可见,而internal表示仅在定义它的程序集(您的程序集)中可见。因此,您有一个任何人都可以调用的方法,该方法接受只有您才能看到的类型的参数。那是行不通的。您在这里有两个选择:

选项1:将Class1公开

public class Class1
{ }


如果您不介意该类可以从任何程序集中访问。

选项2:将表单的构造函数设为内部

internal Form2(Class1 c)
{ }


如果您不介意除您之外的其他程序集都无法创建该表单。

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

10-17 01:13