在C#类中声明公共和私有变量的区别

时间:2014-03-18 23:11:45

标签: c#

我有一个例子如下:

public static String DocNum
{
    get;
    set;
}

private static String DocNum2;
public static String DocNum2GetSet {
    get
    {
        return DocNum2;
    }
    set
    {
        DocNum2 = value;
    }
}

我想知道一个声明是否有益于另一个。简单的问题,希望得到一个简单的答案。

3 个答案:

答案 0 :(得分:3)

使用方法没有区别;它只是第一个代码更整洁,因此更容易编写和阅读。如果您需要添加任何额外代码,则需要第二个代码,例如验证或在设置器中引发事件。

答案 1 :(得分:1)

在第二种情况下,您提供了一致的API,您可以在以后修改底层结构,而无需让消费者更改其代码。

例如,现在您将DocNum2存储在私有字符串中。您可以稍后修改它以从文件或其他资源获取该数据,并且代码的使用者将更加明智。

答案 2 :(得分:0)

第一个例子被称为Auto-Implemented Property。它是一个完整属性的简写,这是你的第二个例子。它在 C#3.0及更高版本中有效。

它通常已足够,但如果您需要自定义逻辑或验证,则完整属性通常是您将要使用的。在执行实现INotifyPropertyChanged的事情时,您还将使用完整属性。