实体类中公共访问者的私有变量。 C#

时间:2017-07-14 02:04:23

标签: c#

所以我试图了解与我见过和目前使用的最佳实践相比。在下面的代码示例中,我们有一个没有类内方法的实体类。该类只是一个字段列表。

/// <summary>
/// AddUserID
/// </summary>
public string AddUserIDField = "Add_User_ID";
public string AddUserID
{
    get
    {
        if (this.Row != null)
            return (string)mmType.GetNonNullableDbValue(this.Row["Add_User_ID"], 
                "System.String");
        else
            return this._AddUserID;
    }
    set
    {
        if (this.Row != null)
            this.Row["Add_User_ID"] = value;

        this._AddUserID = value;
    }
}

private string _AddUserID;

这里有什么用的私有字符串?它不在类本身内使用或访问。你难道只是将_AddUserID引用替换为AddUserId吗?

这是我的公司框架,而不是EF。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

在C#中,当你写public string MyVar { get; set; }时,它实际上是在生成这段代码:

// The private variable holding the value of the property
private string _myVar;

// The getter and the setter of the property
public string MyVar {
    get
    {
        return _myVar;
    }
    set
    {
        _myVar = value;
    }
}

因此,属性始终具有基础私有变量。该属性只是隐藏getter和setter的语法。它本身并不具有价值。您可以在大多数情况下编写属性而无需编写关联的私有变量这一事实只是C#编译器提供的语法糖(有关详细信息,请参阅Auto-Implemented Properties)。

对于您提供给我们的代码:由于代码使用特定的getter和setter,因此必须显式编写通常隐藏在属性后面的私有变量。