C# 3.0 在单独的类中为每个实体创建属性有什么用?

C# 3.0 在单独的类中为每个实体创建属性有什么用?,c#-3.0,C# 3.0,我正在学习一些好的代码实践,这就是为什么我要学习一些代码,一些我在其中无法理解的东西。它为每个实体在单独的类中创建了属性,就像它在userClass中拥有的属性一样 #region public properties private int uid; public int userId { get { return uid; } set { uid = value; } } private string uName;

我正在学习一些好的代码实践,这就是为什么我要学习一些代码,一些我在其中无法理解的东西。它为每个实体在单独的类中创建了属性,就像它在userClass中拥有的属性一样

  #region public properties

    private int uid;
    public int userId
    {
        get { return uid; }
        set { uid = value; }
    }

    private string uName;
    public string userName
    {
        get { return uName; }
        set { uName = value; }
    }

    private string pwd;
    public string password
    {
        get { return pwd; }
    //    set { pwd = value; }
    }


    private string uAddress;
    public string userAddress
    { 
        get { return uAddress; }
        set { uAddress = value; }
    }


    private string fName;
    public string firstName
    {
        get { return fName; }
        set { fName = value; }
    }

    private string lName;
    public string lastName
    {
        get { return lName; }
        set { lName = value; }
    }

    private string uPhone;
    public string userPhone
    {
        get { return uPhone; }
        set { uPhone = value; }
    }

    private string uMobile;
    public string userMobile
    {
        get { return uMobile; }
        set { uMobile = value; }
    }

    private int secretQuestion;
    public int securityQuestion
    {
        get { return secretQuestion; }
        set { secretQuestion = value; }
    }

    private string userAnswer;
    public string answer
    {
        get { return userAnswer; }
        set { userAnswer = value; }
    }

    #endregion
从业务逻辑类来看,它使用属性,而不是直接使用任何实体的属性名,但是我很困惑,需要什么来创建这样的属性


除此之外,它还有数据库列名的enum,这背后有一个明确的原因,即如果在不久的将来我们必须更改数据库表的字段名,那么我们不必更改整个业务逻辑类,我们可以直接更改enum,但是创建这样的属性有什么用请详细说明这一点

属性可以在接口上定义,但成员字段不能。因此,如果需要将此类重构为实现接口的类,可以将属性放在接口上(然后让其他类也实现它们)。

可以在接口上定义属性,但成员字段不能。因此,如果您需要将该类重构为实现接口的类,您可以将属性放在接口上(然后让其他类也实现它们)。

您真的在问为什么它使用属性而不是公共字段吗

字段是一个实现细节——它们是数据的存储方式,外部世界不应该关心这些,至少对于99%的类型来说是这样。属性是类型就其API而言所具有的契约的一部分-实现取决于类型。换句话说,这是一个封装的问题。属性可以在接口中表示为抽象方法等,因为它们将契约和实现分开

此外,属性使数据绑定、调试和其他各种事情变得更简单。我有一本书,你可能会觉得有用

话虽如此,这些属性的实现方式非常繁琐,而且它们不遵守.NET命名约定。我会把它们写成:

public int UserId { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
// etc

你真的在问为什么它使用属性而不是公共字段吗

字段是一个实现细节——它们是数据的存储方式,外部世界不应该关心这些,至少对于99%的类型来说是这样。属性是类型就其API而言所具有的契约的一部分-实现取决于类型。换句话说,这是一个封装的问题。属性可以在接口中表示为抽象方法等,因为它们将契约和实现分开

此外,属性使数据绑定、调试和其他各种事情变得更简单。我有一本书,你可能会觉得有用

话虽如此,这些属性的实现方式非常繁琐,而且它们不遵守.NET命名约定。我会把它们写成:

public int UserId { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
// etc

一些类似的问题:

除此之外:事实上,你可以很容易地决定自己的公共领域或财产。更容易理解的是:

(1)
Name
是类
Person

(2)
速度
是类
平面的属性


(3)
Empty
是类
String
的公共字段。如果你说
String
有一个名为
Empty
的属性,那真的很奇怪。而且
String
有一个属性
Length
很容易理解。

一些类似的问题:

除此之外:事实上,你可以很容易地决定自己的公共领域或财产。更容易理解的是:

(1)
Name
是类
Person

(2)
速度
是类
平面的属性


(3)
Empty
是类
String
的公共字段。如果你说
String
有一个名为
Empty
的属性,那真的很奇怪。而且
String
有一个属性
Length
很容易理解。

你说那些属性是以乏味的方式实现的,怎么实现的?你说那些属性是以乏味的方式实现的,怎么实现的?可能重复的