Возможность установить явный модификатор доступа была добавлена с введением методов интерфейса по умолчанию , поставляемых с C # 8. Методы интерфейса по умолчанию поддерживают различные модификаторы доступа, поэтому имеет смысл, по крайней мере, для согласованности бытьвозможность указать модификаторы доступа для всех членов. Если вы укажете недопустимый модификатор доступа (например, метод private
без тела), код не скомпилируется.
Являются ли эти два интерфейса абсолютно одинаковыми? Ключевое слово public
добавляет / меняет что-нибудь?
Да, по умолчанию модификатор доступа public
. Установка в явном виде дает тот же результат.
Это что-то, что должно быть исправлено, или я ошибаюсь и должно ли public
последовательно использоваться сейчас?
Это зависит от вас. Если вы хотите использовать, например, private
для полей в классах, то вы можете применить ту же явность в своих интерфейсах для public
, теперь, когда это возможно.
Интерфейс по умолчаниюМетоды Спецификация предложения входит в специфику изменения модификатора доступа.