Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 01.04.2012
Сообщений: 41
1

Обобщенный интерфейс

13.05.2013, 16:49. Показов 3282. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Объясните плиз, функцию и суть обобщённого интерфейса? суть обобщенного типа мне понятно, это замета object , типа вроде как универсальный тип данных.
Но вот запись обобщенного интерфейса мне вообще не понятна:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System.Collections.Generic;
public class ShoppingCart: IEnumarable<product>  // что значит эта запись?? Унаследовать Интерфейс с..обобщенным типом product?
 
{
     public List<product> Products {get;set;} // тут вроде ясно, создается коллекция из объектов product 
 
     public IEnumerator<Product> GetEnumerator()  // с этого момента вообще ничего понять не могу
                          {                  
                               return Products.GetEnumerator();
                          }
 
    IEnumerator IEnumerable.GetEnumerator()
 
                      {
                       return GetEnumerator();
                      }
            }
 
 объясните пожалуйста по шага
м, что в этом коде происходит?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2013, 16:49
Ответы с готовыми решениями:

Обобщенный интерфейс ковариантность
Господа, подскажите пожалуйста по коду. Вот ради эксперимента набросал код, но не пойму, почему...

Как объяснить компилятору, что коллекция может работать с объектами реализующими обобщенный интерфейс IComparable<T>
Привет! Помогите пожалуйста разобраться. Как объяснить компилятору, что коллекция может работать...

Обобщенный и не обобщенный класс с одинаковым именем
Добрый день! Task&lt;int&gt; task = Task.Run(() =&gt; { Console.WriteLine(&quot;Foo&quot;); return 3; }); Как такое...

Обобщенный класс
Задание: Создать обобщенный класс для хранения объектов-исключений. Тип исключения задается при...

6
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
13.05.2013, 17:37 2
Обычный метод GetEnumerator.
C#
1
2
3
4
public IEnumerator<Product> GetEnumerator() // с этого момента вообще ничего понять не могу
 { 
     return Products.GetEnumerator();
 }
При вызове - вызывает метод своего поля, и возвращает результат.

Второй обычный метод, который только и делает что вызывает первый обычный метод.
C#
1
2
3
4
IEnumerator IEnumerable.GetEnumerator() 
 {
     return GetEnumerator();
 }
0
1 / 1 / 0
Регистрация: 01.04.2012
Сообщений: 41
13.05.2013, 17:55  [ТС] 3
Цитата Сообщение от turbanoff Посмотреть сообщение
Обычный метод GetEnumerator.
C#
1
2
3
4
public IEnumerator<Product> GetEnumerator() // с этого момента вообще ничего понять не могу
 { 
     return Products.GetEnumerator();
 }
При вызове - вызывает метод своего поля, и возвращает результат.

Второй обычный метод, который только и делает что вызывает первый обычный метод.
C#
1
2
3
4
IEnumerator IEnumerable.GetEnumerator() 
 {
     return GetEnumerator();
 }

1. В чем разница если написать просто IENumerator GetEnumerator? и в наследовании <product> Не писать?
2. зачем реализоввывать 2 метод вообще?) если в этом смысл?)

Как я понял, вся эта реализация обобщенного интерфейса ( кстати обязательно ли ему тут быть обобщенным??) сдела на для того чтобы потом к коллекции и массиву объектов можно было применить оператор foreach?
0
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
13.05.2013, 18:32 4
1. Не понял вас. Покажите как вы хотите.
2. Реализовывать нужно все что есть в интерфейсе. Так как в IEnumerable<product> два метода, то и реализовывать нужно два.

Добавлено через 1 минуту
Не только foreach, но еще и кучу методов LINQ.
0
1 / 1 / 0
Регистрация: 01.04.2012
Сообщений: 41
13.05.2013, 18:38  [ТС] 5
Цитата Сообщение от turbanoff Посмотреть сообщение
1. Не понял вас. Покажите как вы хотите.
2. Реализовывать нужно все что есть в интерфейсе. Так как в IEnumerable<product> два метода, то и реализовывать нужно два.

Добавлено через 1 минуту
Не только foreach, но еще и кучу методов LINQ.
я хочу просто понять, какова роль каждого из этих методов, Но зачем тогда нужен второй, если он делает тоже самое что первый ( за исключением того что его реализация обязательна, т.к. это интерфейс ).

Получается, реализация только этого ИФ обязательна, для того чтобы потом воплотить запросы LINQ?
0
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
13.05.2013, 18:41 6
Один метод (который не обобщенный) был еще в первой версии .NET FW - тогда не было обобщенных методов. И он остался для сохранения обратной совместимости

Либо IEnumerable<T> либо IQueryable<T>
1
1 / 1 / 0
Регистрация: 01.04.2012
Сообщений: 41
13.05.2013, 18:45  [ТС] 7
Цитата Сообщение от turbanoff Посмотреть сообщение
Один метод (который не обобщенный) был еще в первой версии .NET FW - тогда не было обобщенных методов. И он остался для сохранения обратной совместимости

Либо IEnumerable<T> либо IQueryable<T>
Спасибо!
0
13.05.2013, 18:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2013, 18:45
Помогаю со студенческими работами здесь

Обобщенный делегат
Всем доброго времени суток. Необходима помощь профессионалов. Есть код: using System; ...

Обобщенный стек
Навеяно темой . Написал небольшой обобщенный стек на объектах. Понимаю, что в обычной практике...

Обобщенный метод сортировки массива
Что-то не пойму, в чем проблема. Точнее, вижу, что мне пишет VS, но не пойму, что делаю не так....

Реально ли сделать обобщенный ввод
Если вкратце, то мне надоело писать зацикленный ввод с проверками на корректность(требуют в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru