为什么我们需要创建类变量来获取和设置属性?

时间:2010-12-12 18:22:42

标签: c# automatic-properties

非常简单的问题,但我发现了解我们为什么这么做非常重要。

我可以在类中创建一个属性,如下所示:

第一种方法:

public class MyClass
{
   public string MyProperty {get;set;}
}

第二种方法:

public class MyClass
{
    private string _myProperty;

    public string MyProperty
    {
        get
        {
            return _myProperty;
        }
        set
        {
            _myProperty = value;
        }
    }
}

几乎所有文章都使用后一种方法。为什么我们需要在类中创建一个临时变量来保存字符串值。为什么我们不能只使用第一种方法?第二种方法是否提供任何好处?创建额外的变量来存储值是不是很糟糕的内存和性能?

4 个答案:

答案 0 :(得分:9)

在C#3.0之前,

Automatic properties没有被添加到C#中,因此在C#3.0出现之前编写了许多使用后一种形式的示例或文章。除非你需要在你的财产制定者和吸气者中做额外的工作,否则没有理由选择其中一个。

答案 1 :(得分:1)

自动设置器自动属性 auto-implemented properties (第一种方法)仅适用于.NET Framework> = 3.0。因此,在Framework 3.0发布之前编写的文章使用第二种方法。

这两种方法是等价的。在内部,它们以相同的方式工作,所以我更喜欢编写更少的代码并尽可能使用第一种方法。

答案 2 :(得分:1)

自动属性并非始终可用。此外,如果您在属性中有某种特殊操作,但不希望它在类内部执行,则声明的变量也会有用。

答案 3 :(得分:1)

当然,如果您希望能够访问支持字段,您仍需要编写完整语法。例如,如果您要提出更改事件:

private string _name;
public string Name
{
    get
    {
        return _name;
    }
    set
    {
        if (_name != value)
        {
            _name = value;
            RaisePropertyChanged("Name");  // assuming this method handles raising the event
        }
    }
}