- •1.Классы в с#: данные класса: поля и константы, спецификаторы доступа.
- •2. Классы в с#: методы класса, конструкторы и деструкторы.
- •3. Классы в c#: свойства класса, индексаторы.
- •4.Операции класса: перегрузка унарных и бинарных операций.
- •5.Операции класса: перегрузка операции преобразования типа.
- •6. Наследование классов, пример реализации механизма наследования.
- •7. Виртуальные методы класса
- •8. Абстрактные метода и классы, пример использования абстрактных классов.
- •9. Интерфейсы: пользовательские интерфейсы.
- •10. Интерфейсы: стандартные интерфейсы.
- •11. Структуры, как значимый тип данных.
- •12.Коллекции: классификация коллекций.
- •13. Коллекции: класс Stack.
- •14. Коллекции: класс Queue.
- •15. Коллекции: класс ArrayaList.
- •16.Коллекции: коллекция Hashtable.
- •17. Регулярные выражения, язык описания регулярных выражений.
- •18. Класс Regex и обработка текстовых данных.
- •19. Рекурсивные методы. Прямая рекурсия.
- •20. Рекурсивные методы. Косвенная рекурсия.
- •38. Обработка событий клавиатуры.
16.Коллекции: коллекция Hashtable.
Класс Hashtable предназначен для создания коллекции, в которой для хранения объектов используется хеш-таблица. В хеш-таблице для хранения информации используется механизм, именуемый хешированием (hashing). Суть хеширования состоит в том, что для определения уникального значения, которое называется хеш-кодом, используется информационное содержимое соответствующего ему ключа. Хеш-код затем используется в качестве индекса, по которому в таблице отыскиваются данные, соответствующие этому ключу. Но преимущество хеширования - в том, что оно позволяет сокращать время выполнения таких операций, как поиск, считывание и запись данных, даже для больших объемов информации.
Класс Hashtable реализует стандартные интерфейсы IDictionary, ICollection, IEnumerable, ISerializable, IDeserializationCallback и ICloneable. Размер хеш-таблицы может динамически изменяться.
В классе Hashtable определено несколько конструкторов:
public Hashtable() //создает пустую хеш-таблицу
// строит хеш-таблицу, которая инициализируется элементами коллекции с
public Hashtable(IDictionary с)
public Hashtable(int capacity) //создает хеш-таблицу с вместимостью capacity
public virtual bool ContainsKey (object k) - Возвращает значение true , если в вызывающей хеш-таблице содержится ключ, заданный параметром k. В противном случае возвращает значение false.
public virtual bool ContainsValue (object v) - Возвращает значение true, если в вызывающей хеш-таблице содержится значение, заданное параметром v. В противном случае возвращает значение false.
В классе Hashtable, помимо свойств, определенных в реализованных им интерфейсах, определены два собственных public-свойства:
public virtual ICollection Keys { get; } //позволяет получить коллекцию ключей
public virtual ICollection Values { get; } //позволяет получить коллекцию значений
Для добавления элемента в хеш-таблицу необходимо вызвать метод Add(), который принимает два отдельных аргумента: ключ и значение.
17. Регулярные выражения, язык описания регулярных выражений.
Регулярные выражения предназначены для обработки текстовой информации и обеспечивают:
Эффективный поиск в тексте по заданному шаблону;
Редактирование текста;
Формирование итоговых отчетов по результатам работы с текстом.
Регулярное выражение - это шаблон, по которому выполняется поиск соответствующего фрагмента текста. Язык описания регулярных выражений состоит из символов двух видов: обычных символов и метасимволов. Обычный символ представляет в выражении сам себя, а метасимвол - некоторый класс символов.
Метасимволы:
. - Любой символ, кроме \n. - Выражение c.t соответствует фрагментам: cat, cut, c#t, c{t и т.д.
[] - Любой одиночный символ из последовательности, записанной внутри скобок. Допускается использование диапазонов символов. - Выражение c[aui]t соответствует фрагментам: cat, cut, cit. Выражение c[a-c]t соответствует фрагментам: cat, cbt, cct.
\w - Любой алфавитно-цифровой символ. - Выражение c\wt соответствует фрагментам: cbt, cct, c2t и т.д., но не соответствует фрагментам c%t, c{t и т.д.
Уточняющие метасимволы:
^ |
Фрагмент, совпадающий с регулярными выражениями, следует искать только в начале строки |
$ |
Фрагмент, совпадающий с регулярными выражениями, следует искать только в конце строки |
В регулярных выражениях часто используются повторители - метасимволы, которые располагаются непосредственно после обычного символа или группы символов и задают количество его повторений в выражении.
* |
Ноль или более повторений предыдущего элемента |
Выражение ca*t соответствует фрагментам: ct, cat, caat, caaat и т.д. |
+ |
Одно или более повторений предыдущего элемента |
Выражение ca+t соответствует фрагментам: cat, caat, caaat и т.д. |
? |
Не более одного повторения предыдущего элемента |
Выражение ca?t соответствует фрагментам: ct, cat. |
Примеры регулярных выражений:
слово rus -
@"rus" или "rus"
номер телефона в формате xxx-xx-xx - @"\d\d\d-\d\d-\d\d" или @"\d{3}(-\d\d){2}"
номер автомобиля - @"[A-Z]\d{3}[A-Z]{2}\d{2,3}RUS"