Правильное использование свойств C # - PullRequest
13 голосов
/ 20 августа 2010
private List<Date> _dates;

public List<Date> Dates
{
    get { return _dates; }
    set { _dates = value; }
}

OR

public List<Date> Dates
{
    get;        
    set;    
}

Я всегда использовал первое, это неправильная или плохая практика? Мне никогда не приходило в голову, что я могу просто использовать второй вариант. Мне нравится, когда мои инкапсулированные переменные начинаются с подчеркивания, чтобы я мог отличить их от параметров метода. И я всегда так делал.

Возможно ли, что использование первой опции приведет к созданию экземпляра дополнительного List<Date> объекта, а затем к замене всего _dates на value, или это более разумно, чем это?

Кроме того, что является самым выдающимся в отрасли или это абсолютно субъективно?

Ответы [ 12 ]

0 голосов
/ 20 августа 2010

Пока вам не нужно убедиться, что List<Date> инициализирован в геттере, вы в порядке с обеими версиями. Я просто предлагаю вам использовать одну версию и не смешивать ее в своем коде ...

Если вам нужно его инициализировать, вам нужно перейти на первую версию ...

private List<Date> _dates; 

public List<Date> Dates 
{ 
    get { if (_dates == null) _dates = new List<Date>(); return _dates; } 
    set { _dates = value; } 
} 
0 голосов
/ 20 августа 2010

Это не имеет значения. Второе - просто сахар. Я всегда использую второе, потому что оно чище, но время от времени мне нужен доступ к значению поддержки.

...