这里是:
我有两种形式和一个类,我想从
通过参数从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/