初始化c#property / field最佳方法

时间:2017-03-22 15:36:23

标签: c# properties

这些代码有什么区别?哪一个是正确的或最好的解决方案?

1

public static CultureInfo __cultureInfo { get; set; }
public static CultureInfo cultureInfo
{
    get
    {
        if (__cultureInfo == null)
            __cultureInfo = new CultureInfo("pt-BR");
        return __cultureInfo;
    }
}

2

public static CultureInfo cultureInfo = new CultureInfo("pt-BR");

1 个答案:

答案 0 :(得分:0)

在C#中,它被广泛接受使用私有字段和公共属性处理封装。
通常,对于静态字段,您将在应用程序启动时实例化该字段,除非您公开设置公共属性私人领域可以在其他时间更新
例如:

private static CultureInfo cultureInfo = new CultureInfo("pt-BR");

public static CultureInfo CultureInfo { get { return cultureInfo; } }



问题1 这两个例子有什么区别? <
在你的第一个例子中:

public static CultureInfo __cultureInfo { get; set; }
public static CultureInfo cultureInfo
{
    get
    {
        if (__cultureInfo == null)
            __cultureInfo = new CultureInfo("pt-BR");
        return __cultureInfo;
    }
}

你暴露了田地和财产。此外,您允许设置字段,这是该属性的主要目标(保持字段相同)。

在你的第二个例子中:

public static CultureInfo cultureInfo = new CultureInfo("pt-BR");

您只需公开一个公共字段,该字段可以被所有内容检索和修改。



问题2 正确的方法是什么?

这两种方式都不是理想的,因为它们都有它们的缺点,如前所述。
我在答案开头提供的例子是一种更广泛接受的处理曝光的方法通过属性的字段,以便我个人推荐你的例子。