无法到达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
            */
        }
    }
}

无法到达c#构造函数外部的构造函数字符串

你的声明是错误的,你没有指定类型:

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