公共属性或公共字段

本文关键字:字段 属性 | 更新日期: 2023-09-27 18:01:21

我正在创建一个简单的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);      
    }
}

或者直接写

public string name;
public string lName;

public,现在要考虑输入所有这些:

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

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

clsUser cUser - new clsUser("myid");
txtSomething.Text = cUser.name;

等等…

我想我的问题是为什么我需要重新键入属性首先作为私有,然后作为公共(正如我在所有web示例中看到的)。为什么不从一开始就公开呢?

公共属性或公共字段

你混淆了字段和属性

String name;字段
与属性不同,您无法控制它。
如果您最终决定添加验证或更改事件或其他逻辑,则需要将其更改为属性,这会破坏已编译的代码。
某些特性(如绑定)也只能使用属性。

相反,您可以使用自动实现的属性来使编译器生成所有的样板文件:
public String Name { get; set; }