Книга посвящена программированию на языке 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 |
Эх. Когда же уже будет новое издание?..
Даже не знаю, почему до сих пор нет. Обещали в марте.
Михаил, а почему на сайте бесплатно доступен только пятый раздел? Так и задумано?
Потому что в последнем издании, которое должно выйти в ближайшее время, все примеры переписаны с использованием XAML, а главу с WinForms я сделал как бы дополнительным бесплатным материалом.
Понятно. А у вас можно купить электронные книги? Новые редакции не могу пока найти, только в бумажном варианте. Хотя и от бумажной с автографом я не откажусь :)
Я по договору не имею права распространять напрямую. Издательство тратило деньги на издание книги, сейчас это не так уж и дешево. Как только она появится в продаже, я сообщу.
4-е издание будет?
Должна уже скоро выйти
Здравствуйте, в наличии есть ваша книга Библия C# 4 издания. Читаю дома, таскаю на работу, очень нравится. Только единственное чего не хватает, вопросов или задачек после глав, для закрепления. Было бы очень удобно. А так только с вашей книгой начало приходить какое никакие понимание, спасибо!
Я думал над тем, чтобы создать что-то типа задачника и возможно сделаю такое, но на этом сайте, а не в виде книги
Где взять книгу "Библия С# 3 издание" ?
У вас в блоге идет от 5 главы.
Онлайн купить негде...
Возьми четвертое издание здесь https://www.books.ru/books/bibliya-c-5080742/
Не смог скачать архив с доп. материалом к книге, ссылка не работает. Можно ли решить этот вопрос как-то?
На такой же вопрос я сегодня отвечал по почте. К сожалению я не управляю архивами на сайте издательства. На странице издательства есть ссылка на архив https://bhv.ru/product/bibliya-c/, можно скачать оттуда
Книга очень интересная. Читаю взахлёб -- пытаюсь познать C# (до этого смотрел только ЮТуб). Узнал много нового) Спасибо.
Но есть 3 замечания (наверное, старею, что ворчу =)).
1) качество обложки -- дочитав до половины у меня начали отрываться первые страницы (они не оторвались... пока).
2) опечатки иногда очень бросаются в глаза -- интересно, а издательство редактировало код?
3) (претензия к содержанию) зря вы убрали WinForms и поставили вместо них WPF/XAML. Могли бы просто дополнить книгу, давая читателям возможность самим решить, какую технологию выбрать. Сразу отвечу на ваше возражение, что оно же выложено на сайте! -- Не привык я читать на сайте, именно поэтому и покупал книгу.
Почему WinForms должно быть в книге: ещё не наступили те времена, когда WPF/XAML захватили хотя бы 70% рынка. Мою программу (на Delphi) использовали в основном на Win 7. Вряд ли технология WPF/XAML появится там.
Соглашусь с комментарием выше, особенно про качество обложки, листов. Издательство сильно дешевит.
А не возможно ли просто сделать одну главу про winforms, потом другую про WPF. Расширять книгу именно, пусть будет больше листов
По поводу обложки я тут не решаю
По поводу WinForms, эти главы доступны здесь на сайте https://www.flenov.info/books/read/biblia-csharp
Если я буду добавлять и не убирать, то книга будет очень толстая и дорогая. Тогда точно понадобиться твердая обложка, а это сделает книгу в два раза дороже. Поэтому приходиться искать баланс - информации в книги и дополнительной информации на сайте.
Моё мнение, что книгу можно выпускать как дополнение к прошлой, чтобы если кто то прочитал прошлое издание, с удовольствием мог купить новое и при прочтении узнавать новое, а не только 1 глава отличалась:)
В сентябре должно выйти новое издание и оно будет отличаться очень сильно. Если выпускать дополнения - будет сложно, потому что я никогда не меняю одну главу, меняется много и в разных местах книги
Скажите пожалуйста когда выйдет новое издание? Очень хотелось бы приобрести и начать свой путь с вашей книги.
Должно быть очень скоро, я не знаю, потому что это все зависит от издательства
Судя по постерам в инете в 5ом издании меньше страниц, чем в 4ом. Стоит ли ждать 5ое или купить в данный момент 4ое?
Стоит ждать 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
Проверил уже три онлайн магазина, во всех можно купить только бумажную версию книги. Планируется ли продажа электронной копии 5го издания? Если да, то где?
За распространение отвечает издательство, я не знаю, когда будет электронная версия, скорей всего ее еще нет
Показывать пример debug на HelloWorld? Какой смысл то?
Так видео же не про дебаг, это знакомство с IDE.
Такой вопрос на сайте Ozon есть 5 издание книги и есть 5 издание перераб. и дополненное. Какие отличия кроме цены?
Есть только одно пятое издание. На сайте издательства тоже только одна 5-я версия и она за 630 рублей:
https://bhv.ru/?s=Библия+C%23&post_type=product&type_aws=true&id=1&filter=1
Мишаня, привет. Это я - твой единственный фанат. Я на протяжении многих лет создавал иллюзию того, что тебя читают много людей, но это был я. Сейчас напишу это сообщение со всех аккаунтов.
Здравствуйте Михаил,
Где можно купить последнее издание вашей книги?
На озон ее больше нет, а можно ли купить на amazon или ebay?
На Амазоне уже давно нет, можно электронную версию купить на
Iitres
Михаил, давно читаю ваши книги. Есть и PHP глазами хакера и Библия C# 2е издание. Так как работаю инженером электроником, на некоторое время забросил программирование. Потому что фриленсил, и выгорел. Ну и обстоятельства в жизни. Хочу освежить и углубить свои знания в C#, так как хотелось бы использовать C# в связке с Selenium и заняться автоматизированным тестированием. 2 года назад был опыт коммерческий с ruby + selenium.
Прочитал Библию C# 2е издание по главу об ООП включительно. Всё понятно и доходчиво. Хочу углубить и систематизировать знания.
Как по вашему мнению, стоит ли покупать 5е издание, или материала из 2гл издания вполне хватит на настоящий момент?
Пятое издание конечно изменилось очень сильно, но если для автоматизации, то и второго издания хватит. Сейчас популярность набирают cypress.io, посмотри про этот Фреймворк, очень хороший и простой.
Cypress уже использовал. И Selenium с разными языками. Но всё же к C# тянет и тянет. К тому же хочу выйти из автоматизации в веб.
Здравствуйте!)
Читаю вашу Библию С# 2022года
Все нравится, читаю наслаждаюсь. Но есть но одно.
Сбило с толку то, что у книги на вашем сайте и у моей, бумажной, одинаковые обложки, а начинка разная. На сайте тут десктопные программы, а обложка под веб, а у моей, бумажной, web начинка и такая же обложка
Так и должно быть?
Спасибо за книги!!
Здесь на сайте я содержание уже давно не обновлял, так что на сайте устаревшая информация.
Здравствуйте, Михаил, спасибо вам за ваши книги, недавно взял себе эту книжку, два дня уже читаю не отрываясь, сам по себе я фронтенд разработчик + немного на php пишу и недавно наткнулся на ваши видео, многие пересмотрел и очень захотелось изучать C#, до этого только в основном JavaScript и C++ для души изучал, вот, благодаря вам на C# обратил внимание, в общем книга очень нравится, написано очень понятно, особенно если уже что то понимаешь в программировании, еще раз спасибо вам что делитесь своими навыками.
Спасибо за отзыв.
А по чему на сайте нет данных о книге Библия C# 6-e издание?
Обновил фото и ссылку. Содержание обновлю позже
Приветствую, Михаил! Подскажи, имеет ли значение версия Visual Studio для работы с примерами? (у меня файлы от 3-го издания)
Версия VS в принципе должна быть последней, чтобы поддерживать .NET 8, потому что более старая просто может не поддерживать. Но я писал весь код в VS Code и компилировал в командной строке. Старый Visual Studio не поддерживает последний .NET и могут возникнуть проблемы.
Благодарю!
Приветствую Михаил! Спасибо большое за ваши труды и замечательные структурированные книги и не только по C#, давно присматриваюсь к шарпу но так и не писал больших проектов, хотя есть 3/4/5/6 издание Библий C# и почти все перечитал, с технической точки зрения очень проработанные книги и материалы. Желаю вам счастья и здоровья, удачи и всего самого наилучшего! Радуйте нас новыми книгами и идеями на вашем канале на ютубе, подписан на Вас давно. Есть ли у Вас планы по 7 изданию Библии ? Спасибо.
Текущая достаточно свежая, поэтому пока нет.
Понял, спасибо большое за ответ!