Глава 1. ВВЕДЕНИЕ В .NET.................................... 10
1.1. ЧТО ТАКОЕ .NET....................................................................... 11
1.2. ИСТОРИЯ .NET ........................................................................ 14
1.3. ПОДДЕРЖИВАЕМЫЕ ОПЕРАЦИОННЫЕ СИСТЕМЫ ......................... 17
1.4. КАК ПРОГРАММИРОВАЛИ РАНЬШЕ............................................. 18
1.4.1. Язык Cи и Windows API - традиционный подход.................19
1.4.2. Язык С++ и библиотека базовых классов ..........................19
1.4.3. Visual Basic 6.0..................................................................20
1.4.4. Язык Java..........................................................................20
1.4.5. Модель компонентных объектов .......................................21
1.5. ЧТО ПРЕДЛАГАЕТ НАМ .NET ....................................................... 22
1.6. ОСНОВНЫЕ КОМПОНЕНТЫ .NET................................................. 23
1.6.1. Три кита: CLR, CTS и CLS ..................................................23
1.6.2. Библиотека базовых классов ............................................24
1.7. ЯЗЫК C# ................................................................................ 24
1.8. СБОРКИ В .NET........................................................................ 27
1.9. ПОДРОБНО О CTS .................................................................... 29
1.9.1. Типы классов ....................................................................29
1.9.2. Типы интерфейсов............................................................30
1.9.3. Типы структур ...................................................................30
1.9.4. Типы перечислений ..........................................................31
1.9.5. Типы делегатов.................................................................31
1.9.6. Встроенные типы данных..................................................31
1.10. ПОДРОБНО О CLS .................................................................. 32
1.11. ПОДРОБНО О CLR .................................................................. 34
1.12. ПРОСТРАНСТВА ИМЕН ............................................................ 34
Глава 2. РАЗВЕРТЫВАНИЕ .NET
И ПЕРВАЯ ПРОГРАММА ................................ 37
2.1. РАЗВЕРТЫВАНИЕ У ЗАКАЗЧИКА................................................. 38
C# на примерах
4
2.2. РАЗВЕРТЫВАНИЕ У ПРОГРАММИСТА. УСТАНОВКА VISUAL STUDIO
COMMUNITY ...................................................................... 43
2.3. ПЕРВАЯ ПРОГРАММА С ИСПОЛЬЗОВАНИЕМ VISUAL STUDIO............ 46
Глава 3. ОСНОВНЫЕ КОНСТРУКЦИИ ЯЗЫКА C#........ 50
3.1. ИССЛЕДОВАНИЕ ПРОГРАММЫ HELLO, WORLD!............................. 51
3.1.1. Пространства имен, объекты, методы ..............................51
3.3. ТИПЫ ДАННЫХ И ПЕРЕМЕННЫЕ ................................................. 54
3.3.1. Системные типы данных ...................................................54
3.3.2. Объявление переменных ..................................................55
3.3.3. Внутренние типы данных ..................................................56
3.3.4. Члены типов данных .........................................................56
3.3.5. Работа со строками ..........................................................57
Члены класса System.String..................................................58
Базовые операции ...............................................................58
Сравнение строк..................................................................59
Поиск в строке .....................................................................61
Конкатенация строк .............................................................63
Разделение и соединение строк ..........................................63
Заполнение и обрезка строк ................................................65
Вставка, удаление и замена строк .......................................65
Получение подстроки...........................................................66
Управляющие последовательности символов......................66
Строки и равенство..............................................................67
Тип System.Text.StringBuilder................................................67
3.3.6. Области видимости переменных ......................................68
3.3.7. Константы ........................................................................70
3.4. ОПЕРАТОРЫ............................................................................ 70
3.4.1. Арифметические операторы.............................................70
3.4.2. Операторы сравнения и логические операторы................72
3.4.3. Операторы присваивания.................................................74
3.4.4. Поразрядные операторы ..................................................74
3.5. ПРЕОБРАЗОВАНИЕ ТИПОВ ДАННЫХ............................................ 75
3.6. НЕЯВНО ТИПИЗИРОВАННЫЕ ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ ............... 79
3.7. ЦИКЛЫ .................................................................................. 80
Содержание
5
3.7.1. Цикл for ............................................................................81
3.7.2. Цикл foreach .....................................................................81
3.7.3. Циклы while и do/while.......................................................82
3.8. КОНСТРУКЦИИ ПРИНЯТИЯ РЕШЕНИЙ.......................................... 83
3.9. МАССИВЫ .............................................................................. 85
3.9.1. Одномерные массивы ......................................................85
3.9.2. Двумерные массивы.........................................................87
3.9.3. Ступенчатые массивы.......................................................88
3.9.4. Класс Array. Сортировка массивов....................................89
3.9.5. Массив - как параметр .....................................................91
3.10. КОРТЕЖИ ............................................................................. 91
3.11. КАК ПОДСЧИТАТЬ КОЛИЧЕСТВО СЛОВ В ТЕКСТЕ ......................... 92
3.12. ВЫЧИСЛЯЕМ ЗНАЧЕНИЕ ФУНКЦИИ........................................... 93
3.13. ДЕЛАЕМ КОНСОЛЬНЫЙ КАЛЬКУЛЯТОР...................................... 95
3.14. ГРАФИЧЕСКИЙ КАЛЬКУЛЯТОР.................................................. 97
3.15. "УГАДАЙ ЧИСЛО". ИГРА......................................................... 100
Глава 4. ФАЙЛОВЫЙ ВВОД/ВЫВОД...................... 103
4.1. ВВЕДЕНИЕ В ПРОСТРАНСТВО ИМЕН SYSTEM.IO.......................... 104
4.2. КЛАССЫ ДЛЯ МАНИПУЛЯЦИИ С ФАЙЛАМИ И КАТАЛОГАМИ........... 105
4.2.1. Использование класса DirectoryInfo................................106
4.2.2. Классы Directory и DriveInfo. Получение списка дисков ...108
4.2.3. Класс FileInfo ..................................................................110
4.2.4. Класс File........................................................................113
4.2.5. Классы Stream и FileStream.............................................114
4.2.6. Классы StreamWriter и StreamReader...............................116
4.2.7. Классы BinaryWriter и BinaryReader .................................117
4.3. СЕРИАЛИЗАЦИЯ ОБЪЕКТОВ .................................................... 118
4.4. ВЫВОД СОДЕРЖИМОГО ФАЙЛА НА C#...................................... 120
4.5. РАБОТА С XML-ФАЙЛОМ ......................................................... 123
4.6. АРХИВАЦИЯ ФАЙЛОВ НА C# .................................................... 129
4.7. ПОДСЧЕТ КОЛИЧЕСТВА СЛОВ В ФАЙЛЕ..................................... 131
C# на примерах
6
Глава 5. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ
ПРОГРАММИРОВАНИЕ............................... 133
5.1. ОСНОВЫ ООП ....................................................................... 134
5.2. КЛАССЫ И ОБЪЕКТЫ.............................................................. 137
5.2.1. Члены класса..................................................................137
5.2.2. Ключевое слово class......................................................138
5.2.3. Класс System.Object .......................................................141
5.2.4. Конструкторы .................................................................143
5.2.5. Деструкторы...................................................................144
5.2.6. Обращаемся сами к себе. Служебное слово this.............145
5.2.7. Доступ к членам класса ..................................................146
5.2.8. Модификаторы параметров............................................147
5.2.9. Необязательные параметры ...........................................152
5.2.10. Именованные аргументы ..............................................152
5.2.11. Ключевое слово static ...................................................153
5.2.12. Индексаторы ................................................................155
5.2.13. Свойства ......................................................................158
5.3. ПЕРЕГРУЗКА ФУНКЦИЙ ЧЛЕНОВ КЛАССА................................... 158
5.3.1. Перегрузка методов .......................................................158
5.3.2. Перегрузка конструкторов..............................................160
5.3.3. Перегрузка операторов ..................................................161
5.4. НАСЛЕДОВАНИЕ И ПОЛИМОРФИЗМ ......................................... 163
5.4.1. Введение в наследование...............................................163
5.4.2. Защищенный доступ.......................................................165
5.4.3. Запечатанные классы. Ключевое слово sealed................166
5.4.4. Наследование конструкторов .........................................167
5.4.5. Сокрытие имен. Ключевое слово base ............................167
5.4.6. Виртуальные члены ........................................................169
5.4.7. Абстрактные классы .......................................................170
Глава 6. ИНТЕРФЕЙСЫ, СТРУКТУРЫ
И ПЕРЕЧИСЛЕНИЯ..................................... 172
6.1. ПОНЯТИЕ ИНТЕРФЕЙСА.......................................................... 173
6.2. КЛЮЧЕВЫЕ СЛОВА AS И IS ...................................................... 175
6.3. ИНТЕРФЕЙСНЫЕ СВОЙСТВА.................................................... 176
Содержание
7
6.4. ИНТЕРФЕЙСЫ И НАСЛЕДОВАНИЕ............................................. 177
6.5. СТРУКТУРЫ .......................................................................... 178
6.6. ПЕРЕЧИСЛЕНИЯ .................................................................... 181
Глава 7. ОБРАБОТКА ИСКЛЮЧЕНИЙ...................... 183
7.1. ВВЕДЕНИЕ В ОБРАБОТКУ ИСКЛЮЧЕНИЙ ................................... 184
7.2. ПЕРЕХВАТ ИСКЛЮЧЕНИЙ. БЛОКИ TRY, CATCH, FINALLY ................ 186
7.3. КЛАСС EXCEPTION ................................................................. 188
7.4. ИСКЛЮЧЕНИЯ УРОВНЯ СИСТЕМЫ ............................................ 190
7.5. КЛЮЧЕВОЕ СЛОВО FINALLY..................................................... 191
7.6. КЛЮЧЕВЫЕ СЛОВА CHECKED И UNCHECKED .............................. 192
Глава 8. КОЛЛЕКЦИИ И ИТЕРАТОРЫ ..................... 194
8.1. ВВЕДЕНИЕ В КОЛЛЕКЦИИ ....................................................... 195
8.2. НЕОБОБЩЕННЫЕ КОЛЛЕКЦИИ ................................................ 198
8.3. ОБОБЩЕННЫЕ КОЛЛЕКЦИИ.................................................... 200
8.4. КЛАСС ARRAYLIST. ДИНАМИЧЕСКИЕ МАССИВЫ .......................... 202
8.5. ХЕШ-ТАБЛИЦА. КЛАСС HASHTABLE........................................... 206
8.6. СОЗДАЕМ СТЕК. КЛАССЫ STACK И STACK ............................. 209
8.7. ОЧЕРЕДЬ. КЛАССЫ QUEUE И QUEUE .................................... 210
8.8. СВЯЗНЫЙ СПИСОК. КЛАСС LINKEDLIST ................................ 212
8.9. СОРТИРОВАННЫЙ СПИСОК. КЛАСС SORTEDLIST... 215
8.10. СЛОВАРЬ. КЛАСС DICTIONARY.......................... 217
8.11. СОРТИРОВАННЫЙ СЛОВАРЬ:
КЛАСС SORTEDDICTIONARY.......................... 221
8.12. МНОЖЕСТВА: КЛАССЫ HASHSET
И SORTEDSET ............................................................. 223
8.13. РЕАЛИЗАЦИЯ ИНТЕРФЕЙСА ICOMPARABLE .............................. 225
8.14. ПЕРЕЧИСЛИТЕЛИ ................................................................ 226
C# на примерах
8
8.15. РЕАЛИЗАЦИЯ ИНТЕРФЕЙСОВ IENUMERABLE И IENUMERATOR ..... 227
8.16. ИТЕРАТОРЫ. КЛЮЧЕВОЕ СЛОВО YIELD.................................... 228
Глава 9. КОНФИГУРАЦИЯ СБОРОК .NET ................ 230
9.1. СПЕЦИАЛЬНЫЕ ПРОСТРАНСТВА ИМЕН...................................... 231
9.2. УТОЧНЕННЫЕ ИМЕНА ИЛИ КОНФЛИКТЫ НА УРОВНЕ ИМЕН ........... 233
9.3. ВЛОЖЕННЫЕ ПРОСТРАНСТВА ИМЕН.
ПРОСТРАНСТВО ПО УМОЛЧАНИЮ....................................... 234
9.4. СБОРКИ .NET ........................................................................ 235
9.4.1. Зачем нужны сборки? .....................................................235
9.4.2. Формат сборок...............................................................237
9.4.3. Однофайловые и многофайловые сборки.......................238
9.5. СОЗДАНИЕ СБОРКИ (DLL) ....................................................... 239
9.6. СОЗДАНИЕ ПРИЛОЖЕНИЯ, ИСПОЛЬЗУЮЩЕГО СБОРКУ............... 243
Глава 10. МНОГОПОТОЧНОСТЬ И ПАРАЛЛЕЛЬНОЕ
ПРОГРАММИРОВАНИЕ............................... 246
10.1. ПАРАЛЛЕЛЬНЫЕ КОЛЛЕКЦИИ................................................ 247
10.2. БИБЛИОТЕКА РАСПАРАЛЛЕЛИВАНИЯ ЗАДАЧ............................ 250
10.3. КЛАСС TASK ........................................................................ 251
10.4. ОЖИДАНИЕ ЗАДАЧИ............................................................. 255
10.5. КЛАСС TASKFACTORY............................................................ 258
10.6. ПРОДОЛЖЕНИЕ ЗАДАЧИ ....................................................... 259
10.7. ВОЗВРАТ ЗНАЧЕНИЯ ИЗ ЗАДАЧИ ............................................ 259
Глава 11. СЕТЕВОЕ ПРОГРАММИРОВАНИЕ............. 261
11.1. ПРОСТРАНСТВО ИМЕН SYSTEM.NET........................................ 262
11.2. КЛАСС URI .......................................................................... 263
11.3. ЗАГРУЗКА ФАЙЛОВ (HTTP И FTP) ............................................ 264
11.4. КЛАСС DNS. РАЗРЕШЕНИЕ ДОМЕННЫХ ИМЕН .......................... 268
Содержание
9
11.5. СОКЕТЫ ............................................................................. 269
11.5.1. Типы сокетов ................................................................269
11.5.2. Порты ...........................................................................270
11.5.3. Классы для работы с сокетами......................................271
11.6. КОНВЕРТЕР ВАЛЮТ.............................................................. 272
11.7. ПРОСТОЙ СКАНЕР ПОРТОВ .................................................... 274
Глава 12. СОЗДАНИЕ ПРИЛОЖЕНИЯ
КЛИЕНТ/СЕРВЕР....................................... 277
12.1. ПРИНЦИП РАБОТЫ ПРИЛОЖЕНИЯ .......................................... 278
12.2. РАЗРАБОТКА СЕРВЕРНОЙ ЧАСТИ............................................ 278
12.3. ПРИЛОЖЕНИЕ-КЛИЕНТ......................................................... 281
12.4. МНОГОПОТОЧНЫЙ СЕРВЕР ................................................... 285
Глава 13. РАЗРАБОТКА ПРИЛОЖЕНИЙ
ДЛЯ ПЛАНШЕТА
ПОД УПРАВЛЕНИЕМ WINDOWS 10 ................ 293
13.1. ПОДГОТОВКА К СОЗДАНИЮ МОБИЛЬНЫХ ПРИЛОЖЕНИЙ........... 294
13.2. ПРОЕКТИРОВАНИЕ ГРАФИЧЕСКОГО ИНТЕРФЕЙСА .................... 298
13.3. НАПИСАНИЕ КОДА ПРИЛОЖЕНИЯ ........................................... 302
13.4. КОМПИЛЯЦИЯ И ЗАПУСК ПРИЛОЖЕНИЯ .................................. 303
Глава 14. РАБОТА С БАЗАМИ ДАННЫХ .................. 305