2012-07-06 47 views
10

林不知道,因爲在Java getter/setter看起來有點不同,但什麼是「C#方式」來編碼這個東西?我應該如何在C#中使用屬性?

選項a。)

private string name; 

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

    private int time; 

    public int Time 
    { 
     get { return time; } 
     set { time = value; } 
    } 

灣)

private string _name; 
    private int _time; 

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

    public int time 
    { 
     get { return _time; } 
     set { _time = value; } 
    } 

℃。)

public string name {get; set;} 
    public int time {get; set;} 

確定有一些例子。什麼看起來會更好?我是否應該先寫所有的私有變量聲明,然後將屬性聲明或者應該將變量聲明和屬性聲明放在​​一起。

回答

26

如何d,以下.NET命名約定:

public string Name { get; set; } 
public int Time { get; set; } // Odd type for time, admittedly... 

不要打擾手工編寫的財產,除非你自己你做一些不平凡的它。

如果你手動編寫屬性實現,它取決於你如何命名私有變量。我個人使用:

private string name; 
public string Name 
{ 
    get { /* whatever */ } 
    set { /* whatever */ } 
} 

...但如果你想使用下劃線,那是你的特權。

至於訂購會員 - 這更是您自己的選擇。假設你正在與一個團隊合作,與團隊交談,看看本地會議是什麼。

3

在特定情況下(在getter或setter沒有邏輯),最好的選擇是C(與屬性名稱的小改變遵循C#標準)

public string Name {get; set;} 
public int Time {get; set;} 
11

如果您不需要訪問基礎支持領域,然後自動屬性是建議的方式是(C)。但是,根據.NET命名約定,它們應該是PascalCase。

public string Name { get; set; } 
public int Time { get; set; } 
1
public string Name {get; set;} 
public int Time {get; set;} 
6

前兩個是剛命名convensions,你應該選擇基於該公司的/ dev組或你自己的決定。

第三種情況是對相同屬性進行標記的簡短方式,其中實際的field將由運行時本身生成。

簡短優點:簡單易行

短缺點:不能放東西 geter/setter方法,不能把斷點在Visual Studio ...

希望這有助於。

3

取決於案例,當您定義字段時使用了下劃線字符,並且如果您只需要一個簡單的getter/setter,則不需要自己定義字段,因爲編譯器會在後臺爲您定義它們。

2

我會選擇,其他人已經發布。

public string Name {get; set;} 
public int Time {get; set;} 

請注意,您可以單獨對setter和getter進行更改保護級別,例如,

public string Name {get; protected set;} 
protected int Time {get; private set;} 

您只能使用比應用於孔屬性更高的保護。

相關問題