// Продемонстрировать применение свойства, class PropertyDemo { static void Main {
SimpProp ob = new SimpProp;
Console.WriteLine("Первоначальное значение ob.MyProp: " + ob.MyProp);
ob.MyProp = 100; // присвоить значение Console.WriteLine("Текущее значение ob.MyProp: " + ob.MyProp);
// Переменной prop нельзя присвоить отрицательное значение.
Console.WriteLine("Попытка присвоить значение " +
"-10 свойству ob.MyProp");
ob.MyProp = -10;
Console.WriteLine("Текущее значение ob.MyProp: " + ob.MyProp);
}
}
Вот к какому результату приводит выполнение этого кода.
Первоначальное значение ob.MyProp: 0 Текущее значение ob.MyProp: 100
Попытка присвоить значение -10 свойству ob.MyProp Текущее значение ob.MyProp: 100
Рассмотрим приведенный выше код более подробно. В этом коде определяется одно закрытое полеpropи свойствоМуРгор,управляющее доступом к полюprop.Как пояснялось выше, само свойство не определяет место в памяти для хранения поля, а только управляет доступом к полю. Кроме того, полеpropявляется закрытым, а значит, оно доступно
СвойствоМуРгоруказано какpublic,а следовательно, оно доступно из кода за пределами его класса. И в этом есть своя логика, поскольку данное свойство обеспечивает доступ к полюprop,которое является закрытым. Аксессорgetэтого свойства просто возвращает значение из поляprop,тогда как аксессорsetустанавливает значение в полеpropв том и только в том случае, если это значение оказывается положительным. Таким образом, свойствоМуРгорконтролирует значения, которые могут храниться в полеprop.В этом, собственно, и состоит основное назначение свойств.
Тип свойстваМуРгоропределяется как для чтения, так и для записи, поскольку оно позволяет читать и записывать данные в базовое поле. Тем не менее свойства можно создавать доступными только для чтения или только для записи. Так, если требуется создать свойство, доступное только для чтения, то достаточно определить единственный аксессорget.А если нужно создать свойство, доступное только для записи, то достаточно определить единственный аксессорset.