public class Car : IComparable
{
...
// Реализация IComparable
int IComparable
{
if (this.CarID > obj.CarID)
{
return 1;
}
if (this.CarID < obj.CarID)
{
return -1;
}
return 0;
}
}
Здесь уже не нужно проверять, относится ли входной параметр к типу Car
Car! В случае передачи несовместимого типа данных возникает ошибка на этапе компиляции. Теперь, углубив понимание того, как взаимодействовать с обобщенными элементами, а также усвоив роль параметров типа (т.е. заполнителей), вы готовы к исследованию классов и интерфейсов из пространства имен System.Collections.Generic.Пространство имен System.Collections.Generic
Когда вы строите приложение .NET Core и необходим способ управления данными в памяти, классы из пространства имен System.Collections.Generic
System.Collections.Generic для многих из них определены обобщенные замены.В действительности вы сможете найти некоторое количество обобщенных интерфейсов, которые расширяют свои необобщенные аналоги, что может показаться странным.Тем не менее, за счет этого реализующие их классы будут также поддерживать унаследованную функциональность, которая имеется в их необобщенных родственных версиях. Например, интерфейс IEnumerable
IEnumerable. В табл. 10.4 описаны основные обобщенные интерфейсы, с которыми вы столкнетесь во время работы с обобщенными классами коллекций.В пространстве имен System.Collections.Generic
В пространстве имен System.Collections.Generic
LinkedListNode представляет узел внутри обобщенного контейнера LinkedList, исключение KeyNotFoundException генерируется при попытке получения элемента из коллекции с применением несуществующего ключа и т.д. Подробные сведения о пространстве имен System.Collections.Generic доступны в документации по .NET Core.В любом случае следующая ваша задача состоит в том, чтобы научиться использовать некоторые из упомянутых классов обобщенных коллекций. Тем не менее, сначала полезно ознакомиться со средством языка C# (введенным в версии .NET 3.5), которое упрощает заполнение данными обобщенных (и необобщенных) коллекций.
Синтаксис инициализации коллекций
В главе 4 вы узнали о
ArrayList или List) элементами с применением синтаксиса, похожего на тот, который используется для наполнения базовых массивов. Создайте новый проект консольного приложения .NET Core по имени FunWithCollectionInitialization. Удалите код, сгенерированный в Program.cs, и добавьте следующие операторы using:using System;
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
На заметку!
Синтаксис инициализации коллекций может применяться только к классам, которые поддерживают методAdd, формально определяемый интерфейсами ICollection и ICollection.Взгляните на приведенные ниже примеры:
// Инициализация стандартного массива.
int[] myArrayOfInts = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
// Инициализация обобщенного List<> с элементами int.
List
// Инициализация ArrayList числовыми данными.
ArrayList myList = new ArrayList { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT