C#: Свойства
Люди, пришедшие из C ++ знают проблему ограничения доступа к переменным класса. В общем случае никогда не следует выставлять переменные класса, чтобы другие классы могли изменять его без уведомления класса. Поэтому следующий написанный код, довольно часто встречается в C ++ (код, приведен на C #):
private int myVariable;
public int GetMyVariable()
{
return myVariable;
}
public void SetMyVariable(int value)
{
myVariable = value;
}
Это чистый код, и мы (как разработчики) теперь имеем возможность реагировать на внешние изменения переменных, вставляя некоторые строки кода раньше
myVariable = value. Проблема с этим кодом заключается в том, что- мы действительно хотим только показать, что это всего лишь обертка вокруг
myVariable - нам нужно написать слишком много кода для этого простого шаблона.
Поэтому команда C # представила новую языковую функцию, называемую свойствами. Используя свойства, приведенный выше код сводится к:
private int myVariable;
public int MyVariable
{
get { return myVariable; }
set { myVariable = value; }
}
Теперь код выглядит намного чище. Также был изменен доступ. Вместо того, чтобы получать доступ к
myVariable как к методу (используя a = GetMyVariable() или SetMyVariable(b)), мы можем обращаться к myVariable как к переменной (используя a = MyVariable или MyVariable = b).
Внутренне компилятор все равно будет создавать эти методы (get / set), но мы не заботимся об этом. Мы будем использовать свойства только с
get блоком, set блоком или с обоими, и все будет работать.
Обратите внимание, что Microsoft Visual C++ также имеет расширение в виде
__declspec ключевого слова, что дает нам возможность писать свойства на C++, аналогичные свойствам C #.