170 похожих чатов

Здравствуйте! У меня весьма "теоретический" вопрос. Как в коде указать,

что уже существующий класс реализует мой пользовательский (кастомный) интерфейс? А именно, одномерный массив переменных типа T реализует мой интерфейс IIndexable<T>? Или такого вообще на практике не потребуется? Ведь я могу продублировать мой метод: написать отдельно для T[], а отдельно для IIndexable<T>?

18 ответов

12 просмотров

По правилам типизации c#, чтобы реализовать интерфейс нужно явно прописать class A : I То что ты описал звучит как утиная типизация — т. е. что этот класс не указал, что он реализовал мой интерфейс, но на самом деле реализовал. В C# утиной типизации нет (за одним исключением, но это нерелевантно)

Ayrat Hudaygulov
в C# утиной типизации навалом

Да? Кроме GetEnumerator я не могу вспомнить ничего

без тех самых тайпклассов делается через задницу патерном адаптер

Ayrat Hudaygulov
await, using, foreach

Using вроде бы требует реализовать IDisposable. Или достаточно чтобы просто был метод Dispose()? Foreach это как раз таки GetEnumerator Про await и инициализторы да, запамятовал

👁👃👁️
😳⁉️

Интерфейс не обязателен. Достаточно реализовать GetEnumerator, MoveNext и Current

Ihor D.
Интерфейс не обязателен. Достаточно реализовать Ge...

Вроде бы "или". Т. е. либо был метод GetEnumerator, либо MoveNext и Current

Andrew Shurunov
А не. Глупость сказал хД

Да я сам сейчас чекаю не сказал ли я глупость)

Andrew Shurunov
А не. Глупость сказал хД

Насколько я помню класс, который мы передаем в foreach должен иметь GetEnumerator(), который возвращает тип, который имеет MoveNext() и Current. Вроде бы так

Можно наследоваться от класса, а затем указать в новом классе интерфейс

Mr. N
Можно наследоваться от класса, а затем указать в н...

это называется умным словом адаптер. и не все классы можно унаследовать. расширь строку например)

заюзай стандартный интерфейс. IReadOnlyList вроде позволяет по индексу читать

Похожие вопросы

Обсуждают сегодня

#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
У меня вопрос попроще, почти нубский: нужно заставить сайт эво 1.4.34 перевести с PHP 7.4 на 8.2. Понятное дело, что дополнения обновить-проверить, а с основной системой как ...
Вячеслав Кузьменко
5
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Гляньте, че бывает: Сегодня по одному проекту одной вебстудии делал проект небольшой, на их хостинге. На Modx revo. В определенный момент , работая в админке, вдруг перестал р...
Artem
7
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
12
Карта сайта