член открытого интерфейса в C # 8 - PullRequest
2 голосов
/ 21 ноября 2019

Начиная с последней версии c #, можно написать следующий интерфейс:

public interface IMyInterface
{
    public void MyMethod();
}

Мне кажется, что это пахнет кодом, так как я чувствую, что намерение было написать ранее доступное:

public interface IMyInterface
{
    void MyMethod();
}

Являются ли эти два интерфейса абсолютно одинаковыми? Ключевое слово public добавляет / меняет что-нибудь? Это то, что должно быть исправлено, или я ошибаюсь, и теперь public должно постоянно использоваться?

1 Ответ

1 голос
/ 21 ноября 2019

Возможность установить явный модификатор доступа была добавлена ​​с введением методов интерфейса по умолчанию , поставляемых с C # 8. Методы интерфейса по умолчанию поддерживают различные модификаторы доступа, поэтому имеет смысл, по крайней мере, для согласованности бытьвозможность указать модификаторы доступа для всех членов. Если вы укажете недопустимый модификатор доступа (например, метод private без тела), код не скомпилируется.

Являются ли эти два интерфейса абсолютно одинаковыми? Ключевое слово public добавляет / меняет что-нибудь?

Да, по умолчанию модификатор доступа public. Установка в явном виде дает тот же результат.

Это что-то, что должно быть исправлено, или я ошибаюсь и должно ли public последовательно использоваться сейчас?

Это зависит от вас. Если вы хотите использовать, например, private для полей в классах, то вы можете применить ту же явность в своих интерфейсах для public, теперь, когда это возможно.

Интерфейс по умолчаниюМетоды Спецификация предложения входит в специфику изменения модификатора доступа.

...