Я понимаю, почему вы хотите использовать свойство только для чтения, используя следующий синтаксис:
private int _MyInt;
public int MyInt
{
get { return _MyInt; }
}
Этот пример, вероятно, не самый лучший, потому что я думаю, что свойства только для чтения действительно сияют в сочетании с переменной readonly
, но это рядом с точкой. Я не понимаю, почему использование свойства write-only использует следующий синтаксис:
private int _MyInt;
public int MyInt
{
set { _MyInt = value; }
}
Вот как свойства только для чтения описаны в различных книгах и учебниках. Если вы установите переменную, вы концептуально прочитали бы ее в какой-то момент, по крайней мере, внутри класса, но чтобы прочитать ее даже внутри класса, который вы сделали бы это, обратившись к _MyInt
, который, как я чувствую, нарушает дух инкапсуляции, свойства которого попытайтесь обеспечить соблюдение. Вместо этого, почему бы вам просто не использовать всю мощь свойства с различными правами доступа для доступа к нему как таковым:
private int _MyInt;
public int MyInt
{
set { _MyInt = value; }
private get { return _MyInt; }
}
Что, конечно, можно просто написать
public int MyInt { set; private get; }
Вы все еще получаете инкапсуляцию, но ограничиваете доступ к другим классам, поэтому ее по-прежнему записываете только внешние классы.
Если нет случая, когда вы, честно говоря, хотите назначить переменную, но никогда ее не получите, в этом случае мне определенно будет любопытно, когда возникнет такая необходимость.