我有一个例子如下:
public static String DocNum
{
get;
set;
}
private static String DocNum2;
public static String DocNum2GetSet {
get
{
return DocNum2;
}
set
{
DocNum2 = value;
}
}
我想知道一个声明是否有益于另一个。简单的问题,希望得到一个简单的答案。
答案 0 :(得分:3)
使用方法没有区别;它只是第一个代码更整洁,因此更容易编写和阅读。如果您需要添加任何额外代码,则需要第二个代码,例如验证或在设置器中引发事件。
答案 1 :(得分:1)
在第二种情况下,您提供了一致的API,您可以在以后修改底层结构,而无需让消费者更改其代码。
例如,现在您将DocNum2
存储在私有字符串中。您可以稍后修改它以从文件或其他资源获取该数据,并且代码的使用者将更加明智。
答案 2 :(得分:0)
第一个例子被称为Auto-Implemented Property。它是一个完整属性的简写,这是你的第二个例子。它在 C#3.0及更高版本中有效。
它通常已足够,但如果您需要自定义逻辑或验证,则完整属性通常是您将要使用的。在执行实现INotifyPropertyChanged
的事情时,您还将使用完整属性。