Главная страница
Навигация по странице:

  • 7.4.1 Класс Array

  • IndexOf (T[] array, T value) LastIndexOf

  • FindIndex (T[] array, Predicate match) FindLastIndex

  • Find (T[] array, Predicate match)FindLast (T[] array, Predicate match)FindAll

  • 7.4.2 Класс List

  • 7.4.3 Класс LinkedList

  • List Позволяет получить доступ к списку класса LinkedList , которому принадлежит узел. Next

  • Previous Позволяет получить предыдущий (относительно данного) элемент списка класса LinkedListNode . Если данный элемент является первым, то возвращается nullValue

  • Count Возвращает количество узлов в списке First Возвращает первый узел списка класса LinkedListNode , или null, если список пуст. Last

  • Clear ()Удаляет все узлы из списка RemoveFirst

  • 7.4.4 Класс Queue

  • Count Возвращает количество элементов в очереди Enqueue

  • Clear ()Удаляет все элементы из очереди 118 7.4.5 Класс Stack

  • Count Возвращает количество элементов в стеке Push

  • Clear ()Удаляет все элементы из стека 7.4.6 Классы SortedSet и HashSet

  • Count Возвращает количество элементов в множестве Max

  • Clear ()Удаляет все элементы из множества Contains

  • Конспект лекций (C#)-unlocked. 1 Основные сведения о C# Особенности языка


    Скачать 1.97 Mb.
    Название1 Основные сведения о C# Особенности языка
    Дата15.01.2019
    Размер1.97 Mb.
    Формат файлаpdf
    Имя файлаКонспект лекций (C#)-unlocked.pdf
    ТипДокументы
    #63730
    страница11 из 13
    1   ...   5   6   7   8   9   10   11   12   13
    7.4
    Некоторые универсальные типы С#
    Ниже рассматриваются некоторые распространённые универсальные типы С#, а также классы, в которых есть методы с параметрами типов
    1
    7.4.1
    Класс Array
    Данный класс выступает в роли базового класса для всех массивов. Помимо членов класса, указанных в разделе «Массивы», класс имеет ряд статическим мето- дов, некоторые из которых являются методами с параметром типа. В таблице 7.1 приведены некоторые статические методы класса
    Array
    1
    Для многих приведённых здесь классов имеются аналоги, работающие с классом object, т.е. позволяющие одновременно хранить разнотипные элементы

    109
    Таблица 7.1 – Некоторые статические методы класса
    Array
    Наименование
    Описание
    Resize
    (ref T[] array, int newSize)
    Устанавливает длину массива array в значение newSize без потери существующих значений. Например: class MyClass
    { public int value; public MyClass(int NewValue) {value = NewValue;}
    }
    MyClass[] Mas = new MyClass[4];
    Mas[0] = new MyClass(1);
    Mas[1] = new MyClass(2);
    Mas[2] = new MyClass(3);
    Mas[3] = new MyClass(4); // Значения {1,2,3,4}
    Array.Resize(ref Mas,3); // Значения {1,2,3}
    Array.Resize(ref Mas,5);
    // Значения {1,2,3,null,null}
    IndexOf
    (T[] array,
    T value)
    LastIndexOf
    (T[] array,
    T value)
    Производят поиск в массиве array первого/последнего эле- мента, равного value
    , и возвращает его позицию. Если эле- мент не найден, то возвращается -1. Если класс
    T
    создан пользователем, то в нем должен быть переопределён метод
    Equals
    . Например: class MyClass
    { public int value; public MyClass(int NewValue) {value = NewValue;} public override bool Equals(object obj)
    { if (obj is MyClass) return (obj as MyClass).value == value; else return false;
    }
    }
    MyClass[] Mas = new MyClass[6];
    Mas[0] = new MyClass(4);
    Mas[1] = new MyClass(2);
    Mas[2] = new MyClass(6);
    Mas[3] = new MyClass(4);
    Mas[4] = new MyClass(2);
    Mas[5] = new MyClass(7);
    MyClass Find = new MyClass(2); int i1 = Array.IndexOf(Mas, Find); // i1 = 1 int i2 = Array.LastIndexOf(Mas, Find); // i2 = 4
    Find = new MyClass(3); int i3 = Array.IndexOf(Mas, Find); // i3 = -1

    110
    Продолжение таблицы 7.1
    Наименование
    Описание
    FindIndex
    (T[] array,
    Predicate match)
    FindLastIndex
    (T[] array,
    Predicate match)
    Производят поиск в массиве array первого/последнего эле- мента, удовлетворяющего условию match
    , и возвращает его позицию. Если элемент не найден, то возвращается -1. Для осуществления поиска должен быть реализован метод срав- нения. Например: class MyClass
    { public int value; public MyClass(int NewValue) {value = NewValue;} public static int V; public static bool Upper(MyClass Find)
    { return Find.value > V;
    }
    }
    MyClass[] Mas = new MyClass[6];
    Mas[0] = new MyClass(4);
    Mas[1] = new MyClass(2);
    Mas[2] = new MyClass(6);
    Mas[3] = new MyClass(4);
    Mas[4] = new MyClass(2);
    Mas[5] = new MyClass(7);
    MyClass.V = 5; int i1 = Array.FindIndex(Mas, MyClass.Upper);
    // i1 = 2; int i2 = Array.FindLastIndex(Mas, MyClass.Upper);
    // i2 = 5;
    MyClass.V = 8; int i3 = Array.FindIndex(Mas, MyClass.Upper);
    // i3 = -1
    Find
    (T[] array,
    Predicate match)
    FindLast
    (T[] array,
    Predicate match)
    FindAll
    (T[] array,
    Predicate match)
    Методы
    Find и
    FindLast производят поиск в массиве array первого/последнего элемента, удовлетворяющего условию match
    , и возвращает его. Если элемент не найден, то возвращается значение по умолчанию для типа
    T
    Метод
    FindAll производит поиск в массиве array всех элементов, удовлетворяющего условию match
    , и возвращает их в виде массива. Если элементы не найдены, то возвраща- ется пустой массив.
    Для осуществления поиска должен быть реализован метод сравнения.

    111
    Продолжение таблицы 7.1
    Наименование
    Описание
    Reverse
    (Array array
    [,int index, int length])
    Изменяет порядок элементов во всем одномерном массиве
    (или length элементов начиная с позиции index
    ) на обрат- ный. Например: int[] Mas = { 1, 2, 3, 4 };
    Array.Reverse(Mas); // Mas = {4, 3, 2, 1}
    Array.Reverse(Mas, 1, 2); // Mas = {4, 2, 3, 1}
    Sort
    (T[] array)
    Сортирует массив array
    , используя для сортировки метод
    CompareTo()
    интерфейса
    IComparable
    элемента мас- сива. Если класс
    T
    создан пользователем, то в нем должен быть реализован данный интерфейс. Например: class MyClass : IComparable
    { public int value; public MyClass(int NewValue) {value = NewValue;} public int CompareTo(MyClass other)
    { return value - other.value;
    }
    }
    MyClass[] Mas = new MyClass[6];
    Mas[0] = new MyClass(4);
    Mas[1] = new MyClass(2);
    Mas[2] = new MyClass(6);
    Mas[3] = new MyClass(4);
    Mas[4] = new MyClass(2);
    Mas[5] = new MyClass(7);
    Array.Sort(Mas);
    // Mas = {2, 2, 4, 4, 6, 7}

    112
    Продолжение таблицы 7.1
    Наименование
    Описание
    Sort
    (T[] array,
    IComparer comparer)
    Сортирует массив array
    , используя для сортировки объект comparer некоторого класса, реализующего интерфейс
    IComparer
    . Например: class MyClass
    { public int value; public MyClass(int NewValue) {value = NewValue;}
    } class ReverseCompare : IComparer
    { public int Compare(MyClass x, MyClass y)
    { return y.value - x.value;
    }
    }
    MyClass[] Mas = new MyClass[6];
    Mas[0] = new MyClass(4);
    Mas[1] = new MyClass(2);
    Mas[2] = new MyClass(6);
    Mas[3] = new MyClass(4);
    Mas[4] = new MyClass(2);
    Mas[5] = new MyClass(7);
    ReverseCompare Comparer = new ReverseCompare();
    Array.Sort(Mas, Comparer);
    // Mas = {7, 6, 4, 4, 2, 2}
    7.4.2
    Класс List
    Представляет строго типизированный список объектов, доступных по индек- су. Поддерживает методы для поиска по списку, выполнения сортировки и других операций со списками. Некоторые члены класса приведены в таблице 7.2.
    Таблица 7.2 – Некоторые члены класса
    List
    Наименование
    Описание
    Capacity
    Возвращает или задаёт общее число элементов, которые мо- жет вместить внутренняя структура данных без изменения размера.

    113
    Продолжение таблицы 7.2
    Наименование
    Описание
    Count
    Возвращает количество элементов, уже находящихся в спис- ке. Например:
    List l = new List(); int i1 = l.Count; // i1 = 0; l.Add(5); int i2 = l.Count; // i1 = 1;
    [int index]
    Возвращает или задаёт элемент по указанному индексу.
    Например:
    List l = new List(); l.Add(5); int i = l[0]; // i = 5
    Add
    (T item)
    Добавляет элемент в конец списка. Например:
    List l = new List(); // Список пуст l.Add(5); // В списке один элемент l.Add(2); // В списке два элемента l.Add(4); // В списке три элемента
    Insert
    (int index,
    T item)
    Вставляет элемент item в позицию index
    . Значение index должно быть в диапазоне от 0 до
    Count
    . Например:
    List l = new List(); l.Add(5); // l = {5} l.Add(2); // l = {5, 2} l.Insert(1,7); // l = {5, 7, 2}
    RemoveAt
    (int index)
    Удаляет элемент из позиции index
    . Значение index должно быть в диапазоне от 0 до
    Count-1
    . Например:
    List l = new List(); l.Add(5); // l = {5} l.Add(2); // l = {5, 2} l.Add(7); // l = {5, 2, 7} l.RemoveAt(1); // l = {5, 7}
    Clear()
    Удаляет все элементы из списка. Например
    List l = new List(); // Список пуст l.Add(5); // В списке один элемент l.Add(2); // В списке два элемента l.Clear(); // Список снова пуст
    Remove
    (T item)
    Удаляет первое вхождение элемента item
    . Возвращает true
    , если элемент был удалён (иначе false
    ). Например:
    List l = new List(); l.Add(2); // l = {2} l.Add(3); // l = {2, 3} l.Add(2); // l = {2, 3, 2} l.Remove(2); // l = {3, 2}

    114
    Продолжение таблицы 7.2
    Наименование
    Описание
    RemoveAll
    (Predicate match)
    Удаляет все элементы, удовлетворяющие условию match
    Для осуществления удаления должен быть реализован метод сравнения. Возвращает количество удалённых элементов.
    Например: class MyClass
    { public int value; public MyClass(int NewValue) {value = NewValue;} public static int V; public static bool Upper(MyClass Find)
    { return Find.value > V;
    }
    }
    List l = new List(); l.Add(new MyClass(4)); l.Add(new MyClass(2)); l.Add(new MyClass(6)); l.Add(new MyClass(2)); l.Add(new MyClass(7));
    MyClass.V = 4; l.RemoveAll(MyClass.Upper); // l = {4, 2, 2}
    RemoveRange
    (int index, int count)
    Удаляет count элементов из списка начиная с позиции index
    . Значения index и index+count должны быть в диа- пазоне от 0 до
    Count
    . Например:
    List l = new List(); l.Add(5); // l = {5} l.Add(2); // l = {5, 2} l.Add(7); // l = {5, 2, 7} l.Add(3); // l = {5, 2, 7, 3} l.RemoveRange(1, 2); // l = {5, 3}
    Также имеются методы
    IndexOf
    ,
    LastIndexOf
    ,
    FindIndex
    ,
    FindLastIndex
    ,
    Find
    ,
    FindLast
    ,
    FindAll
    ,
    Sort
    ,
    Reverse
    , аналогичные методам класса
    Array
    7.4.3
    Класс LinkedList
    Представляет собой двусвязный список, каждый узел которого является эк- земпляром класса
    LinkedListNode
    и обладает рядом свойств, некоторые из ко- торых приведены в таблице 7.3.

    115
    Таблица 7.3 – Некоторые свойства класса
    LinkedListNode
    Наименование
    Описание
    List
    Позволяет получить доступ к списку класса
    LinkedList
    , которому принадлежит узел.
    Next
    Позволяет получить следующий (относительно данного) элемент списка класса
    LinkedListNode
    . Если данный элемент является последним, то возвращается null
    Previous
    Позволяет получить предыдущий (относительно данного) элемент списка класса
    LinkedListNode
    . Если данный элемент является первым, то возвращается null
    Value
    Возвращает значение, содержащееся в узле, класса
    T
    Некоторые члены класса
    LinkedList
    приведены в таблице 7.4.
    Таблица 7.4 – Некоторые члены класса
    LinkedList
    Наименование
    Описание
    Count
    Возвращает количество узлов в списке
    First
    Возвращает первый узел списка класса
    LinkedListNode
    , или null
    , если список пуст.
    Last
    Возвращает последний узел списка класса
    LinkedListNode
    , или null
    , если список пуст.
    AddLast
    (T value)
    Добавляет новый узел со значением value в конец списка и возвращает ссылку на него класса
    LinkedListNode
    Например:
    LinkedList l = new LinkedList(); l.AddLast(5); // l = {5} l.AddLast(8); // l = {5, 8}
    AddFirst
    (T value)
    Добавляет новый узел со значением value в начало списка и возвращает ссылку на него класса
    LinkedListNode
    Например:
    LinkedList l = new LinkedList(); l.AddFirst(5); // l = {5} l.AddFirst(8); // l = {8, 5}
    AddAfter
    (LinkedListNode node,
    T value)
    Добавляет новый узел со значением value после узла node и возвращает ссылку на него класса
    LinkedListNode
    . Например:
    LinkedList l = new LinkedList(); l.AddLast(5); // l = {5} l.AddLast(8); // l = {5, 8}
    LinkedListNode node = l.First; // node = {5} l.AddAfter(node, 9); // l = {5, 9, 8}

    116
    Продолжение таблицы 7.4
    Наименование
    Описание
    AddBefore
    (LinkedListNode node,
    T value)
    Добавляет новый узел со значением value перед узлом node и возвращает ссылку на него класса
    LinkedListNode
    . Например:
    LinkedList l = new LinkedList(); l.AddLast(5); // l = {5} l.AddLast(8); // l = {5, 8}
    LinkedListNode node = l.First; // node = {5} l.AddBefore(node, 9); // l = {9, 5, 8}
    Clear_()Удаляет_все_элементы_из_стека_7.4.6_Классы_SortedSet_и_HashSet'>Clear_()Удаляет_все_элементы_из_очереди__118_7.4.5_Класс_Stack'>Clear()
    Удаляет все узлы из списка
    RemoveFirst()
    Удаляет узел в начале списка. Например:
    LinkedList l = new LinkedList(); l.AddLast(5); // l = {5} l.AddLast(8); // l = {5, 8} l.RemoveFirst(); // l = {8}
    RemoveLast()
    Удаляет узел в конце списка. Например:
    LinkedList l = new LinkedList(); l.AddLast(5); // l = {5} l.AddLast(8); // l = {5, 8} l.RemoveLast(); // l = {5}
    Remove
    (T value)
    Удаляет первый узел, имеющий значение value
    . Если уда- ление произведено, то возвращается true
    (иначе false
    ).
    Например:
    LinkedList l = new LinkedList(); l.AddLast(5); // l = {5} l.AddLast(8); // l = {5, 8} l.AddLast(9); // l = {5, 8, 9} l.Remove(8); // l = {5, 9}
    Find
    (T value)
    Возвращает первый узел (класса
    LinkedListNode
    ), имеющий значение value
    . Если узел не найден, то воз- вращается null
    . Например:
    LinkedList l = new LinkedList(); l.AddLast(5); // l = {5} l.AddLast(8); // l = {5, 8} l.AddLast(9); // l = {5, 8, 9} l.AddLast(8); // l = {5, 8, 9, 8}
    LinkedListNode node = l.Find(8);
    // node = 8 (второй узел) node = l.Find(6); // node = null

    117
    Продолжение таблицы 7.4
    Наименование
    Описание
    FindLast
    (T value)
    Возвращает последний узел (класса
    LinkedListNode
    ), имеющий значение value
    . Если узел не найден, то воз- вращается null
    . Например:
    LinkedList l = new LinkedList(); l.AddLast(5); // l = {5} l.AddLast(8); // l = {5, 8} l.AddLast(9); // l = {5, 8, 9} l.AddLast(8); // l = {5, 8, 9, 8}
    LinkedListNode node = l.FindLast(8);
    // node = 8 (четвёртый узел) node = l.FindLast(6); // node = null
    7.4.4
    Класс Queue
    Представляет собой класс очереди, работающей по принципу FIFO («первый пришёл – первый ушёл»). Некоторые члены класса приведены в таблице 7.5.
    Таблица 7.5 – Некоторые члены класса
    Queue
    Наименование
    Описание
    Count
    Возвращает количество элементов в очереди
    Enqueue
    (T item)
    Добавляет в конец очереди новый элемент со значением item
    . Например:
    Queue q = new Queue(); q.Enqueue(5); // q = {5} q.Enqueue(8); // q = {5, 8} (начало слева)
    Dequeue()
    Забирает из начала очереди элемент класса
    T
    и возвращает его. Если очередь пуста, то при выполнении операции воз- никнет исключение. Например:
    Queue q = new Queue(); q.Enqueue(5); // q = {5} q.Enqueue(8); // q = {5, 8} (начало слева) int i = q.Dequeue(); // i = 5, q = {8}
    Peek()
    Получает из начала очереди элемент класса
    T
    но не забира- ет его из очереди. Если очередь пуста, то при выполнении операции возникнет исключение. Например:
    Queue q = new Queue(); q.Enqueue(5); // q = {5} q.Enqueue(8); // q = {5, 8} (начало слева) int i = q.Peek(); // i = 5, q = {5, 8}
    Clear()
    Удаляет все элементы из очереди

    118
    7.4.5
    Класс Stack
    Представляет собой класс очереди, работающей по принципу LIFO («послед- ний пришёл – первый ушёл»), называемую также стеком. Некоторые члены класса приведены в таблице 7.6.
    Таблица 7.6 – Некоторые члены класса
    Stack
    Наименование
    Описание
    Count
    Возвращает количество элементов в стеке
    Push
    (T item)
    Добавляет в вершину стека новый элемент со значением item
    . Например:
    Stack st = new Stack(); st.Push(5); // st = {5} st.Push(8); // st = {8, 5} (верх слева)
    Pop()
    Забирает из вершины стека элемент класса
    T
    и возвращает его. Если стек пуст, то при выполнении операции возник- нет исключение. Например:
    Stack st = new Stack(); st.Push(5); // st = {5} st.Push(8); // st = {8, 5} (верх слева) int i = st.Pop(); // i = 8, st = {5}
    Peek()
    Получает из вершины стека элемент класса
    T
    но не забира- ет его из стека. Если стек пуст, то при выполнении опера- ции возникнет исключение. Например:
    Stack st = new Stack(); st.Push(5); // st = {5} st.Push(8); // st = {8, 5} (верх слева) int i = st.Peek(); // i = 8, st = {8, 5}
    Clear()
    Удаляет все элементы из стека
    7.4.6
    Классы SortedSet и HashSet
    Представляют собой множества объектов. Множество может содержать толь- ко уникальные объекты.
    Отличие между классами заключается в том, что класс
    SortedSet
    упоря- доченный, а класс
    HashSet
    – неупорядоченный, но высокопроизводительный.
    Если класс
    T
    пользовательский, то в нем должен быть реализован интерфейс
    IComparable
    . Также во многих случаях требуется перегрузка метода
    Equals
    Некоторые члены классов приведены в таблице 7.7.

    119
    Таблица 7.7 – Некоторые члены классов
    SortedSet
    и
    HashSet
    1
    Наименование
    Описание
    Count
    Возвращает количество элементов в множестве
    Max
    Возвращает объект класса
    T
    , имеющий максимальное зна- чение. Если множество пустое, то возвращается значение по умолчанию для класса
    T
    Min
    Возвращает объект класса
    T
    , имеющий минимальное зна- чение. Если множество пустое, то возвращается значение по умолчанию для класса
    T
    Add
    (T item)
    Добавляет в множество новый элемент со значением item и возвращает результат добавления типа bool
    (
    true
    , если добавление произведено, и false в противном случае).
    Например:
    SortedSet s = new SortedSet(); bool b = s.Add(8); // b = true, s = {8} b = s.Add(5); // b = true, s = {5, 8} b = s.Add(8); // b = false, s = {5, 8}
    Clear()
    Удаляет все элементы из множества
    Contains
    (T item)
    Проверяет, входит ли элемент item во множество. Воз- вращает значение типа bool
    . Например:
    SortedSet s = new SortedSet(); s.Add(5); // s = {5} s.Add(2); // s = {2, 5} s.Add(7); // s = {2, 5, 7} bool b = s.Contains(7); // b = true b = s.Contains(8); // b = false
    1   ...   5   6   7   8   9   10   11   12   13


    написать администратору сайта