12 Язык С# (обобщения и коллекции).ppt
- Количество слайдов: 18
Обобщения
Пример using System. Collections; class Program { static void Main(string[] args) { Array. List ints = new Array. List(); ints. Add(10); int i = (int)ints[0]; } }
Проблема – типовая безопасность using System. Collections; class Program { static void Main(string[] args) { Array. List ints = new Array. List(); ints. Add("10"); ints. Add(10); int i = s = (short)ints[0]; short (int)ints[0]; } }
Под. NET 2. 0+ возможно так using System. Collections. Generic; class Program { static void Main(string[] args) { List<int> ints = new List<int>(); ints. Add(10); int i = ints[0]; } }
Создание обобщенного класса public class Point<T>
Создание обобщенного класса public class Point<T> { private T x; private T y; public Point(T p 1, T p 2) { x = p 1; y = p 2; } public Point() { x = default(T); y = default(T); }
Создание обобщенного класса public class Point<T> { … public T X { get { return x; } set { x = value; } } public T Y { get { return y; } set { y = value; } } public override string To. String() { return string. Format("[{0}, {1}]", x, y); } }
Использование обобщенного класса static void Main(string[] args) { Point<int> p 1 = new Point<int>(1, 1); Point<double> p 2= new Point<double>(1, 1); } static void Main(string[] args) { Point<string> p 3 = new Point<string>("1", "1"); p 3. X = "2"; }
Решение проблемы public class Point<T> where T : struct { }
Некоторые правила создания обобщенных классов 1. С параметрами обобщенного типа нельзя использовать операции С#. 2. Возможно наследование от обобщенных классов. 3. Возможно создание обобщенных структур, интерфейсов и делегатов.
Коллекции
Коллекции в С# using System. Collections; using System. Collections. Generic;
Классификация коллекций Списки Очереди Стеки Связные списки Сортированные списки Словари Хеш-наборы - множества Битовые массивы
Списки Array. List или List<T> Возможности: 1. Создание списков. 2. Добавление элементов. 3. Инициализация коллекций. 4. Вставка элементов. 5. Доступ к элементам. 6. Удаление элементов. 7. Поиск. 8. Сортировка. 9. Преобразование типов.
Очереди Queue или Queue<T>
Стеки Stack или Stack<T>
Связные списки Linked. List<T>
Связные списки
12 Язык С# (обобщения и коллекции).ppt