无法到达c#构造函数外部的构造函数字符串
本文关键字:构造函数 外部 字符串 | 更新日期: 2023-09-27 18:17:09
我尝试到达构造函数字符串之外的构造函数,但仍然在同一个类中。这是windows窗体应用程序!你可以阅读下面的代码错误,以及我到目前为止所做的尝试。
namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
/*
* Tried make it internal, gives me error:
* Invalid token ';' in class, sruct or interface member declaration
*/
internal name;
public Form2(string name)
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
/*
* I cannot get the name parameter here from constructor error:
* The name 'name' does not exist in current context
*/
}
}
}
你的声明是错误的,你没有指定类型:
private string name;
(如果你想从同一个类访问它,它不需要是内部的,所以我把它设为私有的)
你需要在构造函数中初始化它:
this.name = name;
更多的解释:
我无法从构造函数
获得这里的name参数
这是因为构造函数的形参只在构造函数的作用域中;当你在另一个方法中,它不存在。这就是为什么你需要将它复制到字段(又名类变量),使其在整个类中可用。
你需要设置它
EDIT公平地说,你不需要它是内部的,如果这个类只打算访问它,可以是私有的。
namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
internal string name; //THIS LINE HERE CHANGED TO SET THE TYPE
public Form2(string name)
{
this.name = name; //NEED THIS LINE TO SET THE VARIABLE
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(name); //SHOW THE NAME
}
}
}
您需要在构造函数中添加以下代码行并进行如下更改:-
1)需要指定name的数据类型
2)你需要在构造函数中初始化name。
3)如果你想在同一个类中使用它,那就把它设为"private"而不是"internal"
所以最后的代码是:
private string name;
public Form2(string name)
{
this.name = name;
InitializeComponent();
}
Form2构造函数中使用的名称参数是局部变量,可能需要像下面这样分配这个值
internal name;
public Form2(string name)
{
this.name=name;
InitializeComponent();
}