Вот как я на это смотрю. Когда вы вызываете член (будь то метод, свойство или поле) класса, такого как DoMyThing();
или return Property;
в пределах области действия экземпляра, необязательно вызывать элемент экземпляра. DoMyThing
или Property
также могут быть статическими членами.
public class Abc
{
public static void Static()
{
}
public Xyz Instance;
public void Test() //instance scope
{
var xyz = Instance; //calls instance member
Static(); //calls static member
}
}
Для них обоих (статических и экземпляров) я ничего не ставил перед префиксами. На самом деле мой выбор:
не префикс, как указано выше
public void Test()
{
var xyz = Instance;
Static();
}
префикс только для членов экземпляра
public void Test()
{
var xyz = this.Instance; // prefixes 'this'
Static();
}
префикс для статических элементов
public void Test()
{
var xyz = Instance;
Abc.Static(); //prefixes class
}
префикс в обоих случаях
public void Test()
{
var xyz = this.Instance; // prefixes 'this'
Abc.Static(); //prefixes class
}
Этот ответ не означает, что один стиль лучше, чем другой. Это всего лишь личные предпочтения. У каждого свои претензии на корректность и читабельность.
Мой дубль:
а. Мне, например, не нравится несовместимый стиль 2. и 3.
б. 1. имеет преимущество в том, что для меня это более читабельно. Префикс делает это больше об определении, чем намерении.
с. 4. все о правильности. Его преимущество в том, что он чрезвычайно последовательный, особенно если учесть, что вы в любом случае будете вынуждены использовать префикс для instance и static . Это еще более важно учитывать, когда речь идет о ключевом слове base
, где, если вы не префикс с ключевым словом base
для члена базового класса, то добавление члена с тем же именем в текущий производный класс приведет к тому, что он переопределит предыдущий звоните, меняя всю динамику.
Лично я бы пошел с 1. И использовал this
или Abc
экономно, когда меня принуждали. Для меня это более читабельно, для меня это достаточно хорошо, чтобы компенсировать небольшую несогласованность, которую может вызвать.