2013-02-27 101 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; }