无法到达构造函数C#之外的构造函数字符串

时间:2014-08-08 09:18:27

标签: c# winforms

我尝试将构造函数字符串放在构造函数的外面,但仍然在同一个类中。这是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
            */
        }
    }
}

4 个答案:

答案 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();
}