Метод 1
private int someVar;
public int SomeVar
{
get { return someVar; }
set { someVar= value; }
}
Этот метод обычно не является предпочтительным, поскольку некоторые языки (например, VB.NET) не чувствительны к регистру . Поэтому someVar
, SomeVar
, SOMEVAR
и somevar
, а также все возможные комбинации прописных и строчных букв, которые вы можете считать для компилятора, могут означать одно и то же, и это может привести к ошибкам.
Метод 2
public int SomeVar{get; set;}
Этот метод, называемый автоматической реализацией свойства, создает закрытую переменную в тенях для хранения и извлечения данных, переданных свойству.
В VB.NET имя переменной, созданной для каждого автоматически реализуемого свойства, совпадает со свойством, начинающимся с подчеркивания (_). Таким образом, свойство с именем SomeProperty
будет иметь соответствующую приватную переменную с именем _SomeProperty
.
Это можно продемонстрировать в коде VB.NET, создав любое автоматически реализуемое свойство, а затем создав переменную с тем же именем, что и у автоматически реализуемого свойства с префиксом подчеркивания.
Однако в C #, если у вас есть автоматически реализованное свойство, для свойства используется переменная, украшенная атрибутом CompilerGenerated
. Таким образом, вы можете иметь автоматически реализованное свойство и переменную с тем же именем, что и у свойства, но в другом регистре (, как в методе 1 ).
Заключение
Обычно предпочтительнее использовать автоматически реализованные свойства, когда это возможно. Если возникает необходимость в некоторой проверке перед назначением свойства соответствующей переменной, рекомендуется использовать имя переменной, в которой хранится значение свойства, с префиксом подчеркивания, как показано ниже.
private int _SomeVar;
public int SomeVar
{
get { return _SomeVar;}
set { _SomeVar = value > 0 ? value : 0; }
}