Библия C#

Аннотация

Книга посвящена программированию на языке C# для платформы Microsoft .NET, начиная с основ языка и разработки программ для работы в режиме командной строки и заканчивая созданием современных приложений различной сложности (баз данных, графических программ и др.). Материал сопровождается большим количеством практических примеров. Подробно описывается логика выполнения каждого участка программы. Уделено внимание вопросам повторного использования кода. Компакт-диск содержит примеры программ, дополнительную справочную информацию, а также готовые компоненты, тестовые программы и изображения.

Купить книгу онлайн

Читать онлайн

Введение


Содержимое

Оглавление Введение 1
Благодарности 5
Бонус 5
Структура книги 5

Глава 1. Введение в .NET

7
1.1. Платформа .NET 7
1.1.1. Кубики .NET 8
1.1.2. Сборки 9
1.1.3. Язык программирования 11
1.2. Обзор среды разработки Visual Studio .NET 11
1.2.1. Работа с проектами и решениями 12
1.2.2. Панель Server Explorer 16
1.2.3. Панель Toolbox 17
1.2.4. Панель Solution Explorer 20
1.2.5. Панель Class View 23
1.2.6. Панель Properties 23
1.2.7. Работа с файлами 24
1.3. Простейший пример .NET-приложения 25
1.3.1. Проект на языке C# 25
1.3.2. Компиляция и запуск проекта на языке C# 26
1.4. Компиляция приложений 28
1.5. Поставка сборок 30
1.6. Формат исполняемого файла .NET 34

Глава 2. Основы C#

36
2.1. Комментарии 36
2.2. Переменные 37
2.3. Именование 40
2.4. Работа с переменными 44
2.4.1. Строки и символы 48
2.4.2. Массивы 50
2.4.3. Перечисления 53
2.5. Простейшая математика 56
2.6. Логические операции 62
2.6.1. Условный оператор if 62
2.6.2. Условный оператор switch 65
2.6.3. Сокращенная проверка 66
2.7. Циклы 66
2.7.1. Цикл for 67
2.7.2. Цикл while 70
2.7.3. Цикл do..while 71
2.7.4. Цикл foreach 71
2.8. Управление циклом 73
2.8.1. Оператор break 73
2.8.2. Оператор continue 74
2.9. Константы 75

Глава 3. Объектно-ориентированное программирование

77
3.1. Объекты в C# 77
3.2. Свойства 81
3.3. Методы 86
3.3.1. Описание методов 88
3.3.2. Параметры методов 91
3.3.3. Перегрузка методов 97
3.3.4. Конструктор 98
3.3.5. Статичность 102
3.3.6. Рекурсивный вызов методов 105
3.3.7. Деструктор 107
3.4. Метод Main() 109
3.5. Пространства имен 111
3.6. Начальные значения переменных 113
3.7. Объекты только для чтения 114
3.8. Объектно-ориентированное программирование 114
3.8.1. Наследование 115
3.8.2. Инкапсуляция 116
3.8.3. Полиморфизм 118
3.9. Наследование от класса Object 119
3.10. Переопределение методов 121
3.11. Обращение к предку из класса 124
3.12. Вложенные классы 125
3.13. Область видимости 127
3.14. Ссылочные и простые типы данных 129
3.15. Абстрактные классы 130
3.16. Проверка класса объекта 133

Глава 4. Консольные приложения

134
4.1. Украшение консоли 135
4.2. Работа с буфером консоли 137
4.3. Окно консоли 139
4.4. Запись в консоль 139
4.5. Чтение данных из консоли 142

Глава 5. Визуальный интерфейс

144
5.1. Визуальное приложение 144
5.1.1. Пространства имен 146
5.1.2. Потоки 148
5.1.3. Класс Application 149
5.2. Наследник Form для главной формы 150
5.2.1. Ресурсы программы 150
5.2.2. Файл для логики модуля 151
5.2.3. Именование формы 153
5.2.4. Код, сгенерированный дизайнером 153
5.2.5. Hello Visual World 157
5.3. Свойства формы 158
5.4. Методы формы 164
5.5. События на примере формы 164
5.6. Компоненты .NET 168
5.7. Общие компоненты 171
5.7.1. Button 172
5.7.2. CheckBox 175
5.7.3. CheckedListBox 175
5.7.4. ComboBox 178
5.7.5. DateTimePicker 180
5.7.6. Label и LinkLabel 182
5.7.7. ListBox 183
5.7.8. ListView 183
5.7.9. PictureBox 189
5.7.10. ProgressBar 190
5.7.11. RadioButton 191
5.7.12. TextBox 192
5.7.13. TreeView 192
5.8. Контейнеры 198
5.8.1. GroupBox 198
5.8.2. Panel 199
5.8.3. TabControl 199
5.8.4. FlowLayoutPanel и TableLayoutPanel 200
5.9. Меню и панели инструментов 202
5.9.1. MenuStrip 202
5.9.2. ContextMenuStrip 205
5.9.3. ToolStrip 206
5.9.4. StatusStrip 208

Глава 6. Продвинутое программирование

209
6.1. Приведение и преобразование типов 209
6.2. Объекты простых типов данных 211
6.3. Перечисления Enum 212
6.4. Структуры 216
6.5. Дата и время 218
6.6. Класс строк 221
6.7. Перегрузка операторов 223
6.7.1. Математические операторы 224
6.7.2. Операторы сравнения 227
6.7.3. Операторы преобразования 228
6.8. Тип var 230
6.9. Шаблоны 231

Глава 7. Интерфейсы

236
7.1. Объявление интерфейсов 237
7.2. Реализация интерфейсов 238
7.3. Использование реализации интерфейса 240
7.4. Интерфейсы в качестве параметров 243
7.5. Перегрузка интерфейсных методов 244
7.6. Наследование 247
7.7. Клонирование объектов 247

Глава 8. Массивы

250
8.1. Базовый класс для массивов 250
8.2. Невыровненные массивы 252
8.3. Динамические массивы 254
8.4. Индексаторы массива 257
8.5. Интерфейсы массивов 258
8.5.1. Интерфейс IEnumerable 259
8.5.2. Интерфейсы IComparer и IComparable 262
8.6. Оператор yield 265
8.7. Стандартные списки 266
8.7.1. Класс Queue 267
8.7.2. Класс Stack 268
8.7.3. Класс Hashtable 268
8.8. Типизированные массивы 270

Глава 9. Обработка исключительных ситуаций

274
9.1. Исключительные ситуации 274
9.2. Исключения в C# 277
9.3. Оформление блоков try 280
9.4. Ошибки в визуальных приложениях 282
9.5. Генерирование исключительных ситуаций 283
9.6. Иерархия классов исключений 285
9.7. Собственный класс исключения 286
9.8. Блок finally 289
9.9. Переполнение 290

Глава 10. События в C#

294
10.1. Делегаты 294
10.2. События и их вызов 295
10.3. Использование собственных делегатов 299
10.4. Делегаты изнутри 304
10.5. Анонимные методы 305
10.6. Динамическое создание компонентов 306

Глава 11. Формы

309
11.1. Диалоговые окна 310
11.2. Редактирование объектов 314
11.3. Специфичный результат 319
11.4. Немодальные окна 322
11.5. Многодокументный интерфейс 322

Глава 12. Небезопасное программирование

326
12.1. Разрешение небезопасного кода 327
12.2. Указатели 328
12.3. Память 332
12.4. Системные функции 334

Глава 13. Графика

337
13.1. Введение в Graphics 337
13.2. Рисование по событию Paint 340
13.3. Рисование без события Paint 341
13.4. Цвета 343
13.5. Перья 345
13.6. Кисти 348
13.7. Работа с картинками 349
13.8. Графический дизайнер 354
13.9. Рисование элементов списка ListBox 359

Глава 14. Хранение информации

364
14.1. Реестр 364
14.2. Файловая система 370
14.3. Текстовые файлы 375
14.4. Бинарные файлы 378
14.5. XML-файлы 382
14.5.1. Создание XML-документов 383
14.5.2. Чтение XML-документов 388
14.6. Потоки Stream 392
14.7. Потоки MemoryStream 393
14.8. Сериализация 395
14.9. Отключение сериализации 398
14.10. Особенности сериализации 399
14.11. Управление сериализацией 402

Глава 15. Многопоточность

405
15.1. Класс Thread 406
15.2. Передача параметра в поток 410
15.3. Потоки с использованием делегатов 411
15.4. Конкурентный доступ 414
15.5. Доступ к компонентам 417
15.6. Пул потоков 420
15.7. Домены приложений .NET 421

Глава 16. Базы данных

425
16.1. ADO.NET 425
16.2. Строка подключения 428
16.3. Подключение к базе данных 433
16.4. Пул соединений 435
16.5. Выполнение команд 437
16.6. Транзакции 439
16.7. Наборы данных 441
16.8. Чтение результата запроса 446
16.9. Работа с процедурами 448
16.10. Методы OleDbCommand 454
16.11. Отсоединенные данные 456
16.12. Адаптер DataAdapter 460
16.12.1. Конструктор 461
16.12.2. Получение результата запроса 461
16.12.3. Сохранение изменений в базе данных 462
16.12.4. Связанные таблицы 465
16.12.5. Добавление данных 466
16.12.6. Удаление данных 468
16.13. Набор данных DataSet 469
16.13.1. Хранение данных в DataSet 469
16.13.2. Класс DataRow 472
16.13.3. Класс DataColumn 474
16.13.4. Таблица DataTable 476
16.14. Таблицы в памяти 477
16.15. Выражения 479
16.16. Ограничения 481
16.17. Манипулирование данными 483
16.17.1. Добавление строк 483
16.17.2. Редактирование данных 485
16.17.3. Поиск данных 487
16.17.4. Удаление строк 487
16.18. Связанные данные 488
16.19. Ограничение внешнего ключа 492
16.20. Фильтрация данных 500
16.21. Представление данных DataView 502
16.22. Схема данных 506

Глава 17. Повторное использование кода

509
17.1. Библиотеки 509
17.2. Создание библиотеки 510
17.3. Приватные сборки 514
17.4. Общие сборки 517
17.5. Создание пользовательских компонентов 519
17.6. Установка компонентов 527

Глава 18. Удаленное взаимодействие

529
18.1. Удаленное взаимодействие в .NET 530
18.2. Структура распределенного приложения 531
18.3. Общая сборка 533
18.4. Сервер 534
18.5. Клиент 538
Заключение 541
Приложение. Описание компакт-диска 542
Список литературы 543
Предметный указатель 544
X Оглавление Оглавление IX

Отзывы

Пётр

30 Мая 2019

Эх. Когда же уже будет новое издание?..


Михаил Фленов

30 Мая 2019

Даже не знаю, почему до сих пор нет. Обещали в марте.


Gallemar

02 Октября 2019

Михаил, а почему на сайте бесплатно доступен только пятый раздел? Так и задумано?


Михаил Фленов

02 Октября 2019

Потому что в последнем издании, которое должно выйти в ближайшее время, все примеры переписаны с использованием XAML, а главу с WinForms я сделал как бы дополнительным бесплатным материалом.


Gallemar

02 Октября 2019

Понятно. А у вас можно купить электронные книги?  Новые редакции не могу пока найти, только в бумажном варианте. Хотя и от бумажной с автографом я не откажусь :)


Михаил Фленов

02 Октября 2019

Я по договору не имею права распространять напрямую. Издательство тратило деньги на издание книги, сейчас это не так уж и дешево. Как только она появится в продаже, я сообщу.


ац3к

10 Октября 2019

4-е издание будет?


Михаил Фленов

10 Октября 2019

Должна уже скоро выйти


Петян

25 Июня 2020

Здравствуйте, в наличии есть ваша книга Библия C# 4 издания. Читаю дома, таскаю на работу, очень нравится. Только единственное чего не хватает, вопросов или задачек после глав, для закрепления. Было бы очень удобно.  А так только с вашей книгой начало приходить какое никакие понимание, спасибо!


Михаил Фленов

27 Июня 2020

Я думал над тем, чтобы создать что-то типа задачника и возможно сделаю такое, но на этом сайте, а не в виде книги


Руслан

02 Декабря 2020

Где взять книгу "Библия С# 3 издание" ?
У вас в блоге идет от 5 главы.
Онлайн купить негде...


Михаил Фленов

02 Декабря 2020

Возьми четвертое издание здесь https://www.books.ru/books/bibliya-c-5080742/


Александр_2

28 Февраля 2021

Не смог скачать архив  с доп. материалом к книге, ссылка не работает. Можно ли решить этот вопрос как-то?


Михаил Фленов

01 Марта 2021

На такой же вопрос я сегодня отвечал по почте. К сожалению я не управляю архивами на сайте издательства. На странице издательства есть ссылка на архив https://bhv.ru/product/bibliya-c/, можно скачать оттуда


GoodBoyAlex

10 Июля 2021

Книга очень интересная. Читаю взахлёб -- пытаюсь познать C# (до этого смотрел только ЮТуб). Узнал много нового) Спасибо.

Но есть 3 замечания (наверное, старею, что ворчу =)).
1) качество обложки -- дочитав до половины у меня начали отрываться первые страницы (они не оторвались... пока).
2) опечатки иногда очень бросаются в глаза -- интересно, а издательство редактировало код?
3) (претензия к содержанию) зря вы убрали WinForms и поставили вместо них WPF/XAML. Могли бы просто дополнить книгу, давая читателям возможность самим решить, какую технологию выбрать. Сразу отвечу на ваше возражение, что оно же выложено на сайте! -- Не привык я читать на сайте, именно поэтому и покупал книгу.
Почему WinForms должно быть в книге: ещё не наступили те времена, когда WPF/XAML захватили хотя бы 70% рынка. Мою программу (на Delphi) использовали в основном на Win 7. Вряд ли технология WPF/XAML появится там.


Sergey.U

13 Июля 2021

Соглашусь с комментарием выше, особенно про качество обложки, листов. Издательство сильно дешевит.
А не возможно ли просто сделать одну главу про winforms, потом другую про WPF. Расширять книгу именно, пусть будет больше листов


Михаил Фленов

14 Июля 2021

По поводу обложки я тут не решаю

По поводу WinForms, эти главы доступны здесь на сайте https://www.flenov.info/books/read/biblia-csharp
Если я буду добавлять и не убирать, то книга будет очень толстая и дорогая. Тогда точно понадобиться твердая обложка, а это сделает книгу в два раза дороже. Поэтому приходиться искать баланс - информации в книги и дополнительной информации на сайте.


Sergey.U

23 Июля 2021

Моё мнение, что книгу можно выпускать как дополнение к прошлой, чтобы если кто то прочитал прошлое издание, с удовольствием мог купить новое и при прочтении узнавать новое, а не только 1 глава отличалась:)


Михаил Фленов

24 Июля 2021

В сентябре должно выйти новое издание и оно будет отличаться очень сильно. Если выпускать дополнения - будет сложно, потому что я никогда не меняю одну главу, меняется много и в разных местах книги


oOpsBY

15 Сентября 2021

Скажите пожалуйста когда выйдет новое издание? Очень хотелось бы приобрести и начать свой путь с вашей книги.


Михаил Фленов

17 Сентября 2021

Должно быть очень скоро, я не знаю, потому что это все зависит от издательства


Денис Б.

28 Сентября 2021

Судя по постерам в инете в 5ом издании меньше страниц, чем в 4ом. Стоит ли ждать 5ое или купить в данный момент 4ое?


Михаил Фленов

01 Октября 2021

Стоит ждать 5-е, оно уже будет скоро. Книга стала тоньше, потому что убрал все, что касается самой среды разработки VS, а вместо этого записал видео, которое есть на этой странице. Мне кажется видео лучше, чем пытаться в тексте расписать. Вместо десктопных приложений теперь рассматривается Web, а текст, который я убрал теперь можно за донат прочитать в разделе Плюс+

https://www.flenov.info/story/show/NET-i-UWP
https://www.flenov.info/story/show/NET-i-UWP-Chasty-2

А здесь есть бесплатные части:
https://www.flenov.info/books/read/biblia-csharp


Евгений Л

17 Ноября 2021

Проверил уже три онлайн магазина, во всех можно купить только бумажную версию книги. Планируется ли продажа электронной копии 5го издания? Если да, то где?


Михаил Фленов

17 Ноября 2021

За распространение отвечает издательство, я не знаю, когда будет электронная версия, скорей всего ее еще нет


Михаил Королёв

26 Ноября 2021

Показывать пример debug на HelloWorld? Какой смысл то?


Михаил Фленов

26 Ноября 2021

Так видео же не про дебаг, это знакомство с IDE.


Руслан Вахитов

02 Февраля 2022

Такой вопрос на сайте Ozon есть 5 издание книги и есть 5 издание перераб. и дополненное. Какие отличия кроме цены?


Михаил Фленов

05 Февраля 2022

Есть только одно пятое издание. На сайте издательства тоже только одна 5-я версия и она за 630 рублей:
https://bhv.ru/?s=Библия+C%23&post_type=product&type_aws=true&id=1&filter=1


Единственный подписч

02 Марта 2022

Мишаня, привет. Это я - твой единственный фанат. Я на протяжении многих лет создавал иллюзию того, что тебя читают много людей, но это был я. Сейчас напишу это сообщение со всех аккаунтов.


Emin

19 Мая 2022

Здравствуйте Михаил,
Где можно купить последнее издание вашей книги?
На озон ее больше нет, а можно ли купить на amazon или ebay?


Михаил Фленов

21 Мая 2022

На Амазоне уже давно нет, можно электронную версию купить на
Iitres


Валерий Чернобровый

12 Августа 2022

Михаил, давно читаю ваши книги. Есть и PHP глазами хакера и Библия C# 2е издание. Так как работаю инженером электроником, на некоторое время забросил программирование. Потому что фриленсил, и выгорел. Ну и обстоятельства в жизни. Хочу освежить и углубить свои знания в C#, так как хотелось бы использовать C# в связке с Selenium и заняться автоматизированным тестированием. 2 года назад был опыт коммерческий с ruby + selenium.

Прочитал Библию C# 2е издание по главу об ООП включительно. Всё понятно и доходчиво. Хочу углубить и систематизировать знания.

Как по вашему мнению, стоит ли покупать 5е издание, или материала из 2гл издания вполне хватит на настоящий момент?


Михаил Фленов

12 Августа 2022

Пятое издание конечно изменилось очень сильно, но если для автоматизации, то и второго издания хватит. Сейчас популярность набирают cypress.io, посмотри про этот Фреймворк, очень хороший и простой.


Валерий Чернобровый

12 Августа 2022

Cypress уже использовал. И Selenium с разными языками. Но всё же к C# тянет и тянет. К тому же хочу выйти из автоматизации в веб.


Никита)

25 Сентября 2023

Здравствуйте!)
Читаю вашу Библию С# 2022года
Все нравится, читаю наслаждаюсь. Но есть но одно.
Сбило с толку то, что у книги на вашем сайте и у моей, бумажной, одинаковые обложки, а начинка разная.  На сайте тут десктопные программы, а обложка под веб, а у моей, бумажной, web начинка и такая же обложка
Так и должно быть?
Спасибо за книги!!


Михаил Фленов

26 Сентября 2023

Здесь на сайте я содержание уже давно не обновлял, так что на сайте устаревшая информация.


Amado Muerte _

16 Октября 2023

Здравствуйте, Михаил, спасибо вам за ваши книги, недавно взял себе эту книжку, два дня уже читаю не отрываясь, сам по себе я фронтенд разработчик + немного на php пишу и недавно наткнулся на ваши видео, многие пересмотрел и очень захотелось изучать C#, до этого только в основном JavaScript и C++ для души изучал, вот, благодаря вам на C# обратил внимание, в общем книга очень нравится, написано очень понятно, особенно если уже что то понимаешь в программировании, еще раз спасибо вам что делитесь своими навыками.


Михаил Фленов

16 Октября 2023

Спасибо за отзыв.


Вопрос

07 Сентября 2024

А по чему на сайте нет данных о книге Библия C# 6-e издание?


Михаил Фленов

10 Сентября 2024

Обновил фото и ссылку. Содержание обновлю позже


elk

11 Сентября 2024

Приветствую, Михаил! Подскажи, имеет ли значение версия Visual Studio для работы с примерами? (у меня файлы от 3-го издания)


Михаил Фленов

11 Сентября 2024

Версия VS в принципе должна быть последней, чтобы поддерживать .NET 8, потому что более старая просто может не поддерживать. Но я писал весь код в VS Code и компилировал в командной строке. Старый Visual Studio не поддерживает последний .NET и могут возникнуть проблемы.


elk

11 Сентября 2024

Благодарю!


Василий Сергеев

02 Октября 2024

Приветствую Михаил! Спасибо большое за ваши труды и замечательные структурированные книги и не только по C#, давно присматриваюсь к шарпу но так и не писал больших проектов, хотя есть 3/4/5/6 издание Библий C# и почти все перечитал, с технической точки зрения очень проработанные книги и материалы. Желаю вам счастья и здоровья, удачи и всего самого наилучшего! Радуйте нас новыми книгами и идеями на вашем канале на ютубе, подписан на Вас давно. Есть ли у Вас планы по 7 изданию Библии ? Спасибо.


Михаил Фленов

02 Октября 2024

Текущая достаточно свежая, поэтому пока нет.


Василий Сергеев

03 Октября 2024

Понял, спасибо большое за ответ!


Добавить Комментарий

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне