2

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

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

第一种方法:

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

第二种方法:

public class MyClass
{
    private string _myProperty;

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

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

4

4 回答 4

9

直到 C# 3.0 才将自动属性添加到 C# 中,因此在 C# 3.0 出现之前编写了许多使用后来形式的示例或文章。除非您需要在属性 setter 和 getter 中做额外的工作,否则没有理由选择其中一个。

于 2010-12-12T18:24:57.880 回答
1

自动设置器自动属性自动实现的属性(第一种方法)仅适用于 .NET Framework >= 3.0。因此,在 Framework 3.0 版本之前编写的文章使用第二种方法。

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

于 2010-12-12T18:25:17.330 回答
1

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

于 2010-12-12T18:26:55.727 回答
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
        }
    }
}
于 2010-12-13T01:11:29.280 回答