初始化 c# 属性/字段的最佳方法

拉斐尔·贝罗卡尔·贾斯蒂尼亚诺

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

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");
纳坦格勒

在 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 正确的方法是什么?

如前所述,这两种方式都不理想,因为它们都有缺点。
我在此答案开头提供的示例是一种通过属性处理字段暴露的更广泛接受的方法,因此,我个人将为您的示例提供建议。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章