К чему обращаться внутри класса, если есть приватное поле и публичное свойство, ссылающееся на это поле?

Допустим, у нас есть поле, и ссылающееся на него свойство.

public int I =>_i;
private int _i;

Понятно, что все внешние классы будут ссылаться на свойство, т.к. оно публичное. А внутри этого класса? Доступ есть и к свойству, и к полю, и они идентичны. Логики никакой дополнительной не навешано, это просто геттер.

На что ссылаться при обращении внутри класса? на публичное свойство или приватное поле? Как правильнее? Может есть от msdn какое-то правило?


Ответы (1 шт):

Автор решения: VladD

Это стилистический вопрос, и решать его надо лично вам. Подумайте, какую логику вы хотите передать вашим кодом.

Если вы хотите подчеркнуть логику «это то самое значение, которое видно снаружи», то логичнее было бы обращаться через свойство. Если вы хотите подчеркнуть логику «это то поле, которое является источником значения», то обращайтесь через поле.

Возможно, вам поможет следующее соображение. Подумайте, что будет, если бы ваш код выглядел так: public int I => _i + 1; — вы бы при этих условиях обращались к полю, или к свойству?

В любом случае, поскольку ваше поле правильно инкапсулировано, нет ничего страшного, если вы выберете не тот из двух вариантов: ведь можно всегда переделать, не ломая внешний код, раз поле приватное. (Вот если бы вы по ошибке сделали поле публичным, вот тогда могли бы быть проблемы.) Если нет никакого очевидного предпочтения в случае, который у вас вызывает вопросы, пишите как вам вздумается.

→ Ссылка