С тех пор, как я узнал об авто свойствах, я стараюсь использовать их везде. Раньше всегда был личный член для каждого свойства, которое я использовал в классе. Теперь это заменено свойством auto. Я использую свойство внутри своего класса так, как обычно использую обычное поле члена. Проблема в том, что свойство начинается с капитолия, что делает его немного странным при использовании его таким образом. Я не возражал, что свойства начинаются с капитолия раньше, потому что они всегда будут за «точкой». Теперь я обнаружил, что префиксирую все свойства, которые я использую внутри, с this.
, чтобы успокоить мое чувство.
Моя дилемма в том, что раньше я всегда был немного против префикса использования всех внутренних элементов с this.
, за исключением «необходимости» (как в установщике или конструкторе). Так что я как бы ищу второе мнение по этому поводу. Есть ли стандартный хороший способ сделать это? Должен ли я просто перестать жаловаться (у меня есть тенденция быть "муравейником" (голландское выражение))?
До:
class Foo
{
private Bar bar;
public Bar Bar { get { return bar; } }
public Foo(Bar bar)
{
this.bar = bar;
}
public void DoStuff()
{
if(bar != null)
{
bar.DoMethod();
}
}
}
После того, как:
class Foo
{
public Bar Bar {get; private set;}
public Foo(Bar bar)
{
this.Bar = bar;
// or
Bar = bar;
}
public void DoStuff()
{
if(this.Bar != null)
{
this.Bar.DoMethod();
}
// or
if(Bar != null)
{
Bar.DoMethod();
}
}
}
Обновление
Кажется, что мнения разные, хотя все больше людей предпочитают ставить префикс this.
. До авто свойств я всегда был против префикса с this.
вместо конструкторов и сеттеров (как я упоминал ранее). Но теперь я просто не знаю больше.
Дополнительное примечание: тот факт, что это свойство также принято называть свойством так же, как класс (public Bar Bar { get; private set; }
), также заставляет меня стремиться к префиксу. Каждый раз, когда я набираю Bar.DoMethod()
, я чувствую, что это выглядит как статический метод. Даже если VS будет окрашивать Bar
, если это статический метод, и у вас не может быть статического метода и метода экземпляра с одинаковой сигнатурой. Когда он окрашен, ясно, что это статический метод, но когда он не окрашен, не на 100% ясно, что это не статический метод. Например, вы можете просто пропустить оператор using
, но также и потому, что я не привык связывать незакрашенный цвет с статическим вызовом или нет. Раньше я сразу видел это заглавными буквами первой буквы в случае члена или «точкой» в случае свойства (например, «точка» после foo
в (Foo)foo.Bar.DoMethod()
).
(Сложно выбрать «Принятый ответ» на данный момент)