Асимметричная доступность доступа (C #) - почему? - PullRequest
0 голосов
/ 30 августа 2011

Согласно этой странице в MSDN получается, что доступность определенного средства доступа должна быть более строгой, чем индексатор, и что само свойство.

Теперь я понимаю, что это значит и в некоторых других случаях (см. Такие вопросы, как C # - Улучшение инкапсуляции свойства в этом примере? , ОШИБКА: модификатор доступа установленного метода доступа должен быть больше ограничительный, чем свойство или индексатор и Почему внутренняя защита не более строгая, чем внутренняя? ).

Что я не понимаю (и это вопрос здесь), так это ... есть ли какая-то причина, почему это применяется?

Мне просто не очевидно, что плохого в том, чтобы иметь что-то подобное:

// THIS IS WRONG -- I want this to be set by this class and its derivated
protected MyPropertyType MyProperty 
{ 
    get; // this is protected, by the accessibility of the property
    protected set; // this is wrong -- why?
}

Я думаю, что это тот тип вопроса, где ответ может быть настолько очевидным, что я почувствую себя по-настоящему глупым, когда получу ответ ... но я просто не мог его найти и просто не мог его получить сам. Так что ... стреляй по своему желанию!

1 Ответ

4 голосов
/ 30 августа 2011

То, что я не могу понять (и это вопрос здесь), это ... есть ли причина, почему это применяется?

Я подозреваю, что это для ясности.Ваш синтаксис:

protected MyPropertyType MyProperty 
{ 
    get;
    protected set;
}

Фактически будет таким же, как не указывать доступность установщика, то есть:

protected MyPropertyType MyProperty 
{ 
    get;
    set;
}

Однако при просмотре кода это Появляется , что вы намеревались ограничить доступ.Наличие в компиляторе того, что конкретному методу доступа требуется более ограниченный доступ, вероятно, сокращается общее количество ошибок за счет принудительного упрощения кода за счет уменьшения избыточности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...