2013-02-27 103 views
0

我正在创建一个简单的用户类,如果我使用私有域的公共属性经文使用公共字段,这有什么关系吗?公共房屋或公共领域?

这里是我的意思的例子:

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; 

等等...

我想我的问题是,为什么我需要首先为私有,然后重新输入性公共(正如我在所有的网络例子见过)。为什么不直接让他们公开?

+0

“为什么我需要首先为私有,然后为公众重新键入属性”你不“T。我认为你可以只写'public string Name {get;组; }' – user1477388 2013-02-27 19:30:38

+0

你是否希望使用你的班级的人修改这些属性,如果是的话,那么公开的,如果不是私人的话。 – JonH 2013-02-27 19:30:38

+0

看到这里:[什么说关于属性与公共领域](http://www.google.com/#q=properties+vs+public+fields+site:stackoverflow.com) – 2013-02-27 19:30:41

回答

5

你很混淆字段属性。

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

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

public String Name { get; set; }