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 #.


Популярные сообщения из этого блога

Аппроксимация функций рядом Тейлора

Алгоритмы: Алгоритм Флойда-Уоршелла

Основные структуры данных: Множества