公共财产还是公共领域?

Mad*_* Zu 0 .net c# asp.net

我正在创建一个简单的User类,如果我使用私有字段的公共属性只使用公共字段,这是否重要?

这是我的意思的一个例子:

public class clsUser
{
private string name;
private string lName;

    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name= value;
        }
    }

    public string LName
    {
        get
        {
            return lName;
        }
        set
        {
            lName= value;
        }
    }

public clsUser(string userID)
    {

//get the user id here and set the properties

        this.name= getName(userID);
        this.lName= getLName(userID);      
    }

}
Run Code Online (Sandbox Code Playgroud)

或者我可以做

public string name;
public string lName;
Run Code Online (Sandbox Code Playgroud)

public 现在担心输入所有这些:

public string Name
{
    get
    {
        return name;
    }
    set
    {
        name= value;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我将在另一个页面上使用这些填充表单,如下所示:

clsUser cUser - new clsUser("myid");
txtSomething.Text = cUser.name;
Run Code Online (Sandbox Code Playgroud)

等等...

我想我的问题是为什么我需要首先将属性重新键入为private,然后再为public(就像我在所有Web示例中看到的那样).为什么不公开一下呢?

SLa*_*aks 5

你将字段与属性混淆.

String name;是一个领域.
与财产不同,您无法控制它.
如果您最终决定添加验证或更改事件或其他逻辑,则需要将其更改为属性,这将破坏已编译的代码.
某些功能(例如,绑定)也只能用于属性.

相反,您可以使用自动实现的属性使编译器生成所有该样板:

public String Name { get; set; }
Run Code Online (Sandbox Code Playgroud)