что уже существующий класс реализует мой пользовательский (кастомный) интерфейс? А именно, одномерный массив переменных типа T реализует мой интерфейс IIndexable<T>? Или такого вообще на практике не потребуется? Ведь я могу продублировать мой метод: написать отдельно для T[], а отдельно для IIndexable<T>?
По правилам типизации c#, чтобы реализовать интерфейс нужно явно прописать class A : I То что ты описал звучит как утиная типизация — т. е. что этот класс не указал, что он реализовал мой интерфейс, но на самом деле реализовал. В C# утиной типизации нет (за одним исключением, но это нерелевантно)
в C# утиной типизации навалом
Да? Кроме GetEnumerator я не могу вспомнить ничего
без тех самых тайпклассов делается через задницу патерном адаптер
await, using, foreach
Using вроде бы требует реализовать IDisposable. Или достаточно чтобы просто был метод Dispose()? Foreach это как раз таки GetEnumerator Про await и инициализторы да, запамятовал
для реф структов не нужен IDisposable
форыч не требует IEnumerable
Вроде бы "или". Т. е. либо был метод GetEnumerator, либо MoveNext и Current
А не. Глупость сказал хД
Да я сам сейчас чекаю не сказал ли я глупость)
Насколько я помню класс, который мы передаем в foreach должен иметь GetEnumerator(), который возвращает тип, который имеет MoveNext() и Current. Вроде бы так
Можно наследоваться от класса, а затем указать в новом классе интерфейс
это называется умным словом адаптер. и не все классы можно унаследовать. расширь строку например)
заюзай стандартный интерфейс. IReadOnlyList вроде позволяет по индексу читать
Обсуждают сегодня