C#获取,设置属性

本文关键字:属性 设置 获取 | 更新日期: 2023-09-27 17:59:41

我有以下代码:

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

C#获取,设置属性

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

应该是

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

按如下方式更改Name属性:

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

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

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

模式

public string Name {get;set;}

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

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

您的原始代码所做的似乎是获取您定义的字段,但在匿名支持字段上设置一个字段。因此生成错误。。。