非常简单的问题,但我发现了解我们为什么这么做非常重要。
我可以在类中创建一个属性,如下所示:
第一种方法:
public class MyClass
{
public string MyProperty {get;set;}
}
第二种方法:
public class MyClass
{
private string _myProperty;
public string MyProperty
{
get
{
return _myProperty;
}
set
{
_myProperty = value;
}
}
}
几乎所有文章都使用后一种方法。为什么我们需要在类中创建一个临时变量来保存字符串值。为什么我们不能只使用第一种方法?第二种方法是否提供任何好处?创建额外的变量来存储值是不是很糟糕的内存和性能?
答案 0 :(得分:9)
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
}
}
}