使用 get/set 属性向私有字段赋值总是失败,问题简化如下:在C# Express 中做了一个FORM, 上面有一个textBox1和 button1。另做一个class1如下:class Class1
{
  private string name="abcd"      //为了检验赋了初值abcd
  public string Name
{
get{return name;}
set{name=value;}
}
}
在Form1——Load 中加入:
private void Form1_Load(object sender, EventArgs e)
        {
            Class1 newName = new Class1();
           
            newName.Name = "ASDF";  //把ASDF赋值给私有字段        }
在button1_Click中加入:
private void button1_Click(object sender, EventArgs e)
        {
            Class1 getName = new Class1();
            textBox1.Text=getName.Name;
        }
程序显示没错,但运行时TEXTBOX中指显示最初的abcd,而不是通过属性付给的ASDF。请求帮助。

解决方案 »

  1.   

     "ASDF"赋给了newName 实例,并未赋给getName 实例,所以getName 实例的Name属性仍然是初始值abcd,在c#中不同实例的属性是完全独立的,有各自的副本,更改一个实例的Name属性,不会改变其他实例的Name属性,private void button1_Click(object sender, EventArgs e)
             {
                 Class1 getName = new Class1();
                 getName.Name = "ASDF";  //把ASDF赋值给私有字段
                  textBox1.Text=getName.Name;
             }这样你就看到ASDF了,