我尝试将构造函数字符串放在构造函数的外面,但仍然在同一个类中。这是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
*/
}
}
}
答案 0 :(得分:5)
您的声明有误,您没有指定类型:
private string name;
(如果你想从同一个类访问它,它不需要是内部的,所以我把它设为私有的)
你需要在构造函数中初始化它:
this.name = name;
更多解释:
我无法从构造函数
获取name参数
那是因为构造函数的参数仅在构造函数的范围内;当你在另一种方法时它不存在。这就是为什么你需要将它复制到字段(也就是类变量)以使它在整个类中可用。
答案 1 :(得分:4)
你需要设置它
编辑公平地说,你不需要它是内部的,如果这个类只是要访问它就可以是私有的。
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
}
}
}
答案 2 :(得分:3)
您需要在构造函数中添加以下代码行,并进行如下所示的更改: -
1)需要指定" name"
的数据类型2)你需要初始化" name"在你的构造函数中。
3)如果你想在同一个班级中使用它,那么就把它变成'#34;私人"而不是"内部"
所以最终的代码是:
private string name;
public Form2(string name)
{
this.name = name;
InitializeComponent();
}
答案 3 :(得分:0)
Form2构造函数中使用的名称参数是局部变量。可以使用,您需要将此值分配如下
internal name;
public Form2(string name)
{
this.name=name;
InitializeComponent();
}