C#get,设置属性

时间:2013-02-17 14:48:43

标签: c# properties get set

我有以下代码:

    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”。

3 个答案:

答案 0 :(得分:4)

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

}

应该是

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

答案 1 :(得分:2)

更改Name属性,如下所示:

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

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

修复编译错误并再次运行,然后它将是“xxx”

答案 2 :(得分:1)

模式

public string Name {get;set;}

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

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

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