我有以下代码:
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”。
答案 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访问器访问。
您原始代码似乎正在做的是获取您定义的字段,但是在匿名支持字段上设置。因此构建错误......