Выбор ответа Senior ООП в C# обновлено
static abstract члены интерфейсов
Вопрос
Что даёт возможность объявить static abstract метод в интерфейсе (C# 11)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Вызывать статические члены через параметр-тип: T.Parse(s). Статические абстрактные члены требуют от реализующего типа статического метода, оператора или свойства.
Варианты ответа
- Вызывать метод без экземпляра через имя интерфейса:
IParser.Parse(s) - Делать интерфейс синглтоном с единственной статической реализацией
- Запрещать реализацию интерфейса в структурах, только в классах
- Вызывать статические члены через параметр-тип:
T.Parse(s)правильный ответ
Разбор
Статические абстрактные члены требуют от реализующего типа статического метода, оператора или свойства. Вызвать их можно только через параметр-тип с ограничением, например where T : IParsable<T>, тогда T.Parse(s, null) работает для любого подходящего типа. На этом построена обобщённая математика .NET 7. Через имя интерфейса абстрактный статический метод не вызвать, синглтоном интерфейс не становится, структуры такие интерфейсы реализуют.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «ООП в C#»
- Абстрактный класс или интерфейс
- protected internal и private protected
- Методы интерфейса по умолчанию
- Явная реализация интерфейса
- Банковские счета: инкапсуляция и инварианты
- Фигуры: полиморфная площадь
- Чем new отличается от override
- new и override при вызове через базовый тип