-3

我有以下代码:

    private void button1_Click(object sender, EventArgs e)
    {
        Class1 myClass = new Class1("ttt");
        myClass.Name = "xxx";
        MessageBox.Show(myClass.Name);
    }

class Class1
{
    string str = "";

    public Class1(string name)   
    {
        str = name;
    }

    public string Name
    {
        get { return str; }
        set;

    }
}

最初我设置:

  myClass.Name = "ccc";

但后来改为:

  myClass.Name = "xxx";

并且还改变了:

  set {str = value;}

至:

  set;

为什么当我运行它时我得到 "ccc" 而不是 "xxx" ?

在我当前的代码中有“ccc”。

4

3 回答 3

4
public string Name
{
    get { return str; }
    set;

}

应该

public string Name
{
    get { return str; }
    set { str = value; }
}
于 2013-02-17T14:50:50.063 回答
2

Name按如下方式更改您的属性:

public string Name
{
    get { return str; }
    set { str = value; }
}

回答你的问题,你得到“ccc”而不是“xxx”的原因是你有编译错误。当您运行应用程序时,它会询问您是否要运行最新的已知工作配置。上次你的程序编译时,你使用“ccc”作为文字,这就是仍在运行的东西。

修复编译错误,再次运行,就会出现“xxx”

于 2013-02-17T14:50:41.430 回答
1

图案

public string Name {get;set;}

就是所谓的“自动实现的属性”。

编译器创建一个私有的、匿名的支持字段,只能通过属性的 get 和 set 访问器访问。

您的原始代码似乎在做的是获取您定义的字段,但在匿名支持字段上设置。因此构建错误...

于 2015-06-25T10:52:46.480 回答