Как и было описано в предыдущей статье, не всегда свойства должны иметь оба метода доступа, в таком случае свойства могут иметь только один нужный метод доступа, например:
private double pi = 3.14D;
private double e = 2.71D;
// Свойство только для записи. - WriteOnlyProperty
public double Pi
{
set
{
pi = value;
}
}
// Свойство только для чтения. - ReadOnlyProperty
public double E
{
get
{
return e;
}
private set
{
e = value;
}
}
Свойства, которые имеют только метод-мутатор, называются свойствами только для записи или же WriteOnly свойства.
Свойства, которые имеют только метод-аксессор, называются свойствами только для чтения или же ReadOnly свойства.
Примечание: свойство необязательно должно быть связанно именно с полем, главное, что бы методы доступа работали правильно (соблюдены все требования к написанию метода)!
Также бывают ситуации, когда свойства должны иметь оба метода доступа, но пользователь должен иметь возможность использовать только одно из них, в таком случае можно к нужному методу доступа отдельно дописать модификатор доступа private
(но у всего свойства модификатор доступа всё также должен быть public
!):
classMyClass
{
public string name;
public string Field
{
private set // void SetField(string value) - Метод-мутатор - mutator (setter)
{
if (value != "fool")
{
name = value;
}
else
{
Console.WriteLine("try set fool");
}
}
get // string GetField() - Метод-аксессор - accessor (getter)
{
if (name == null)
return "name == null";
else
return name;
}
}
}
В таком случае при попытке обращения к данному свойству пользователь будет знать, что у свойства есть методы доступа, но при этом один из них закрыт для его использование извне класса: