C# для чайников

C# для чайников

C# для чайников
Автор: Мюллер Джон Пол
Переводчик: И. В. Красикова, С. Н. Тригуб
Дата выхода: 2019
Издательство: Диалектика
Количество страниц: 609
Размер файла: 17.8 MB
Тип файла: PDF
Добавил: codelibs
 Проверить на вирусы  Дополнительные материалы 

Оглавление ....6

Содержание ....7

Об авторе ....22

Посвящение ....23

Благодарности ....23

Введение ....24

Об этой книге ....24

Глупые предположения ....25

Пиктограммы, используемые в книге ....26

Источники дополнительной информации ....26

Что дальше ....27

Ждем ваших отзывов! ....28

Часть 1. Основы программирования на C#....30

Глава 1 Ваше первое консольное приложение на C#....32

Компьютерные языки, C# и .NET ....32

Что такое программа ....33

Что такое C# ....33

Что такое .NET ....34

Что такое Visual Studio 2017 и Visual C# ....35

Создание первого консольного приложения ....36

Создание исходной программы ....37

Тестовая поездка ....41

Заставим программу работать ....42

Обзор консольного приложения ....44

Каркас программы ....44

Комментарии....44

Тело программы ....45

Введение в хитрости панели элементов ....46

Сохранение кода на панели элементов ....46

Повторное использование кода из панели элементов ....47

Глава 2 Работа с переменными....48

Объявление переменной ....49

Что такое int ....49

Правила объявления переменных ....50

Вариации на тему int ....51

Представление дробных чисел ....52

Работа с числами с плавающей точкой ....53

Объявление переменной с плавающей точкой ....54

Ограничения переменных с плавающей точкой ....55

Десятичные числа: комбинация целых чисел и чисел с плавающей точкой ....57

Объявление переменных типа decimal ....57

Сравнение десятичных и целых чисел, а также чисел с плавающей точкой ....57

Логичен ли логический тип ....58

Символьные типы ....58

Тип char ....59

Специальные символы ....59

Тип string ....60

Что такое тип-значение ....61

Сравнение string и char ....62

Вычисление високосных лет: DateTime ....63

Объявление числовых констант ....65

Преобразование типов ....66

Позвольте компилятору C# вывести типы данных ....67

Глава 3 Работа со строками....70

Неизменяемость строк ....71

Основные операции над строками ....73

Сравнение строк ....73

Проверка равенства: метод Compare () ....74

Сравнение без учета регистра ....77

Изменение регистра ....77

Отличие строк в разных регистрах ....78

Преобразование символов строки в символы верхнего или нижнего регистра ....78

Цикл по строке ....79

Поиск в строках ....80

Как искать ....80

Пуста ли строка ....81

Получение введенной пользователем информации ....81

Удаление пробельных символов ....81

Анализ числового ввода ....82

Обработка последовательности чисел ....85

Объединение массива строк в одну строку ....87

Управление выводом программы ....87

Использование методов Trim () wPad() ....87

Использование метода ConcatO ....90

Использование метода Split () ....92

Форматирование строк ....93

StringBuilder: эффективная работа со строками....98

Глава 4 Операторы....100

Арифметика ....100

Простейшие операторы ....101

Порядок выполнения операторов ....101

Оператор присваивания ....103

Оператор инкремента ....103

Логично ли логическое сравнение ....104

Сравнение чисел с плавающей точкой....105

Составные логические операторы ....106

Тип выражения ....108

Вычисление типа операции ....109

Типы при присваивании ....111

Перегрузка операторов ....111

Глава 5 Управление потоком выполнения....114

Ветвление с использованием if и switch ....115

Инструкция if ....116

Инструкция else ....119

Как избежать else ....120

Вложенные инструкции if ....121

Конструкция switch ....124

Циклы ....126

Цикл while ....126

Цикл do. . .while ....131

Операторы break и continue ....131

Цикл без счетчика ....132

Правила области видимости ....136

Цикл for ....137

Пример ....137

Зачем нужны разные циклы ....138

Вложенные циклы ....139

Оператор goto ....140

Глава 6 Глава для коллекционеров....142

Массивы C# ....143

Зачем нужны массивы ....143

Массив фиксированного размера ....144

Массив переменного размера ....146

Свойство Length ....149

Инициализация массивов ....149

Цикл foreach ....149

Сортировка массива данных ....151

Использование var для массивов ....155

Коллекции C# ....156

Синтаксис коллекций ....157

Понятие <т> ....158

Обобщенные коллекции ....158

Использование списков ....158

Инстанцирование пустого списка ....159

Создание списка целых чисел ....159

Создание списка для хранения объектов ....160

Преобразования списков в массивы и обратно ....160

Подсчет количества элементов в списке ....160

Поиск в списках ....161

Прочие действия co списками ....161

Использование словарей ....161

Создание словаря ....162

Поиск в словаре ....162

Итерирование словаря ....162

Инициализаторы массивов и коллекций ....164

Инициализация массивов ....164

Инициализация коллекций ....164

Использование множеств ....165

Выполнение специфичных для множеств задач ....165

Создание множества ....166

Добавление элемента в множество ....166

Выполнение объединения ....167

Пересечение множеств ....168

Получение разности ....169

Не используйте старые коллекции ....170

Глава 7 Работа с коллекциями....172

Обход каталога файлов ....172

Использование программы LoopThroughFiles ....173

Начало программы ....174

Получение начальных входных данных ....174

Создание списка файлов ....175

Форматирование вывода ....176

Вывод в шестнадцатеричном формате ....178

Обход коллекций: итераторы ....179

Доступ к коллекции: общая задача ....180

Использование foreach ....182

Обращение к коллекциям как к массивам: индексаторы....183

Формат индексатора ....184

Пример программы с использованием индексатора ....184

Блок итератора ....188

Создание каркаса блока итератора ....189

Итерирование дней в месяцах ....190

Что же такое коллекция ....192

Синтаксис итератора ....193

Блоки итераторов произвольного вида и размера ....195

Глава 8 Обобщенность....200

Обобщенность в C# ....201

Обобщенные классы безопасны ....201

Обобщенные классы эффективны ....202

Создание собственного обобщенного класса ....203

Очередь посылок ....204

Очередь с приоритетами ....204

Распаковка пакета ....209

Метод Main () ....211

Написание обобщенного кода ....212

И наконец — обобщенная очередь с приоритетами ....213

Использование простого необобщенного класса фабрики ....216

Незавершенные дела ....218

Пересмотр обобщенности ....221

Вариантность ....222

Контравариантность ....222

Ковариантность ....224

Глава 9 Эти исключительные исключения....226

Использование механизма исключений для сообщения об ошибках ....227

О try-блоках ....228

О catch-блоках ....229

О finally-блоках ....229

Что происходит при генерации исключения ....230

Генерация исключений ....232

Для чего нужны исключения ....233

Исключительный пример ....233

Что делает этот пример "исключительным" ....235

Трассировка стека ....236

Использование нескольких catch-блоков ....236

Планирование стратегии обработки ошибок ....239

Вопросы, помогающие при планировании ....239

Советы по написанию кода с хорошей обработкой ошибок ....240

Анализ возможных исключений метода ....242

Как выяснить, какие исключения генерируются теми или иными методами ....244

Последний шанс перехвата исключения ....245

Генерирующие исключения выражения ....246

Глава 10 Списки элементов с использованием перечислений....248

Перечисления в реальном мире ....249

Работа с перечислениями ....250

Использование ключевого слова enum ....251

Создание перечислений с инициализаторами ....252

Указание типа данных перечисления ....253

Создание флагов-перечислений ....253

Применение перечислений в конструкции switch ....255

Часть 2. Объектно-ориентированное программирование на C#....258

Глава 11 Что такое объектно-ориентированное программирование....260

Объектно-ориентированная концепция № 1: абстракция ....261

Процедурные поездки ....262

Объектно-ориентированные поездки ....262

Объектно-ориентированная концепция № 2: классификация ....263

Зачем нужна классификация ....264

Объектно-ориентированная концепция № 3: удобные интерфейсы ....265

Объектно-ориентированная концепция № 3: управление доступом ....266

Поддержка объектно- ориентированных концепций в C# ....267

Глава 12 Немного о классах....268

Определение класса и объекта ....269

Определение класса ....269

Что такое объект ....270

Доступ к членам объекта ....271

Пример объектно-основанной программы ....272

Различие между объектами ....274

Работа со ссылками ....274

Классы, содержащие классы ....276

Статические члены класса ....278

Определение константных членов-данных и членов-данных только для чтения ....279

Глава 13 Методы....282

Определение и использование метода ....283

Использование методов в ваших программах ....284

Аргументы метода ....292

Передача аргументов методу ....292

Передача методу нескольких аргументов ....293

Соответствие определений аргументов их использованию ....294

Перегрузка методов ....295

Реализация аргументов по умолчанию ....297

Возврат значений из метода ....300

Возврат значения оператором return ....301

Определение метода без возвращаемого значения ....302

Возврат нескольких значений с использованием кортежей ....304

Кортеж с двумя элементами ....304

Применение метода Create () ....305

Многоэлементные кортежи ....306

Создание кортежей более чем с двумя элементами ....307

Глава 14 Поговорим об этом....308

Передача объекта в метод ....308

Определение методов ....310

Определение статического метода ....310

Определение метода экземпляра ....312

Полное имя метода ....314

Обращение к текущему объекту ....315

Ключевое слово this ....316

Когда this используется явно ....317

Что делать при отсутствии this ....320

Использование локальных функций ....322

Глава 15 Класс: каждый сам за себя....324

Ограничение доступа к членам класса ....325

Пример программы с использованием открытых членов ....325

Прочие уровни безопасности ....328

Зачем нужно управление доступом ....329

Методы доступа....330

Пример управления доступом....331

Выводы ....335

Определение свойств класса ....335

Статические свойства ....336

Побочные действия свойств ....337

Дайте компилятору написать свойства для вас ....338

Методы и уровни доступа ....338

Конструирование объектов с помощью конструкторов ....339

Конструкторы, предоставляемые C# ....339

Замена конструктора по умолчанию ....341

Конструирование объектов ....342

Непосредственная инициализация объекта ....344

Конструирование с инициализаторами ....345

Инициализация объекта без конструктора ....346

Применение членов с кодом ....347

Создание методов с кодом ....347

Определение свойств с кодом ....348

Определение конструкторов и деструкторов с кодом ....348

Определение методов доступа к свойствам с кодом ....348

Определение методов доступа к событиям с кодом ....349

Глава 16 Наследование....350

Наследование класса ....351

Зачем нужно наследование ....353

Более сложный пример наследования ....354

ЯВЛЯЕТСЯ или СОДЕРЖИТ ....357

Отношение ЯВЛЯЕТСЯ ....357

Доступ к BankAccount через содержание ....358

Отношение СОДЕРЖИТ ....359

Когда использовать отношение ЯВЛЯЕТСЯ и когда — СОДЕРЖИТ ....360

Поддержка наследования в C# ....361

Заменяемость классов ....361

Неверное преобразование времени выполнения ....362

Избегание неверных преобразований с помощью оператора is ....363

Избегание неверных преобразований с помощью оператора as....364

Класс object ....364

Наследование и конструктор ....366

Вызов конструктора по умолчанию базового класса ....366

Передача аргументов конструктору базового класса ....367

Указание конкретного конструктора базового класса ....369

Обновленный класс BankAccount ....370

Глава 17 Полиморфизм....376

Перегрузка унаследованного метода ....377

Простейший случай перегрузки метода ....377

Различные классы, различные методы ....378

Сокрытие метода базового класса ....378

Вызов методов базового класса ....383

Полиморфизм ....385

Что неверно в стратегии использования объявленного типа ....386

Использование is для полиморфного доступа к скрытому методу ....388

Объявление метода виртуальным и перекрытие ....389

Получение максимальной выгоды от полиморфизма ....392

Визитная карточка класса: метод ToStringO ....392

Абстракционизм в C# ....393

Разложение классов ....393

Абстрактный класс: ничего, кроме идеи ....398

Как использовать абстрактные классы ....399

Создание абстрактных объектов невозможно ....401

Опечатывание класса ....401

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

Что значит МОЖЕТ_ИСПОЛЬЗОВАТЬСЯ_КАК ....404

Что такое интерфейс ....406

Реализация интерфейса ....407

Именование интерфейсов ....408

Зачем C# включает интерфейсы ....408

Наследование и реализация интерфейса ....408

Преимущества интерфейсов ....409

Использование интерфейсов ....410

Тип, возвращаемый методом ....410

Базовый тип массива или коллекции ....411

Более общий тип ссылки ....411

Использование предопределенных типов интерфейсов C# ....412

Пример программы, использующей отношение МОЖЕТ_ИСПОЛЬЗОВАТЬСЯ_КАК ....412

Создание собственного интерфейса ....412

Реализация интерфейса IComparable ....414

Вернемся KMain() ....419

Унификация иерархий классов ....420

Что скрыто за интерфейсом ....422

Наследование интерфейсов ....425

Использование интерфейсов для внесения изменений в объектно- ориентированные программы ....426

Гибкие зависимости через интерфейсы ....427

Абстрактный или конкретный? Когда следует использовать абстрактный класс, а когда — интерфейс ....427

Реализация отношения СОДЕРЖИТ с помощью интерфейсов ....428

Глава 19 делегирование событий....430

Звонок домой: проблема обратного вызова ....431

Определение делегата ....432

Пример передачи кода ....434

Делегирование задания ....434

Очень простой первый пример ....434

Более реальный пример ....436

Обзор большего примера ....436

Создание приложения ....437

Знакомимся с кодом ....440

Жизненный цикл делегата ....442

Анонимные методы ....444

События C# ....445

Проектный шаблон Observer ....446

Что такое событие. Публикация и подписка ....446

Как издатель оповещает о своих событиях ....447

Как подписаться на событие ....448

Как опубликовать событие ....448

Как передать обработчику события дополнительную информацию ....450

Рекомендованный способ генерации событий ....450

Как наблюдатели "обрабатывают" событие ....451

Глава 20 Пространства имен и библиотеки....454

Разделение одной программы на несколько исходных файлов ....455

Разделение единой программы на сборки ....456

Выполнимый файл или библиотека ....456

Сборки ....457

Выполнимые файлы ....458

Библиотеки классов ....459

Объединение классов в библиотеки ....459

Создание проекта библиотеки классов ....459

Создание автономной библиотеки классов ....460

Добавление второго проекта к существующему решению ....461

Создание классов для библиотеки ....463

Использование тестового приложения ....464

Дополнительные ключевые слова для управления доступом ....465

internal: строим глазки ЦРУ ....466

protected: поделимся с подклассами ....468

protected internal: более изощренная защита ....470

Размещение классов в пространствах имен ....471

Объявление пространств имен ....473

Пространства имен и доступ ....474

Использование полностью квалифицированных имен ....476

Глава 21 Именованные и необязательные параметры....478

Изучение необязательных параметров ....479

Ссылочные типы ....481

Выходные параметры ....482

Именованные параметры ....483

Разрешение перегрузки ....484

Альтернативные методы возврата значений ....484

Работа с переменными out ....485

Возврат значений по ссылке ....486

Глава 22 Структуры....488

Сравнение структур и классов ....489

Ограничения структур ....489

Различия типов-значений ....490

Когда следует использовать структуры ....490

Создание структур ....491

Определение базовой структуры ....491

Добавление распространенных элементов структур ....492

Использование структур как записей ....498

Управление отдельной записью ....499

Добавление структур в массивы ....499

Перекрытие методов ....500

Часть 3. Вопросы проектирования на C#....502

Глава 23 Написание безопасного кода....504

Проектирование безопасного программного обеспечения ....505

Определение того, что следует защищать ....506

Документирование компонентов программы ....506

Разложение компонентов на функции ....506

Оценка рисков ....508

Построение безопасных приложений Windows ....508

Аутентификация с использованием входа в Windows ....509

Безопасность развертывания ....512

Построение безопасных приложений Web Forms ....513

Атаки SQL Injection ....514

Уязвимости сценариев ....515

Наилучшие методы защиты приложений Web Forms ....516

Использование System. Security ....518

Глава 24 Обращение к данным....520

Знакомство с System.Data ....521

Классы данных и каркас ....523

Получение данных ....524

Использование пространства имен System.Data....525

Настройка образца схемы базы данных ....525

Подключение к источнику данных ....526

Работа с визуальными инструментами ....532

Написание кода для работы с данными ....533

Использование Entity Framework ....537

Глава 25 Рыбалка в потоке....542

Где водится рыба: файловые потоки ....542

Потоки ....543

Читатели и писатели ....543

Использование Streamwriter ....545

Пример использования потока ....546

Как это работает ....548

Наконец-то мы пишем! ....552

Использование конструкции using ....553

Использование StreamReader ....557

Еще о читателях и писателях ....561

Другие виды потоков ....563

Глава 26 Доступ к Интернету....564

Знакомство с System.Net ....565

Как сетевые классы вписываются в каркас ....566

Использование пространства имен System.Net....568

Проверка состояния сети....568

Загрузка файла из Интернета ....570

Отчет по электронной почте ....573

Регистрация сетевой активности....575

Глава 27 Создание изображений....580

Знакомство с System.Drawing ....581

Графика ....581

Перья ....582

Кисти ....582

Текст ....583

Классы рисования и каркас .NET ....584

Использование пространства имен System. Drawing ....585

Приступая к работе ....585

Настройка проекта ....586

Обработка счета ....587

Создание подключения к событию ....588

Рисование доски ....589

Запуск новой игры ....590

Предметный указатель ....592

Даже если вы никогда не имели дела с программированием, эта книга поможет вам освоить язык C# и научиться писать на нем программы любой сложности. Для читателей, которые уже знакомы с каким-либо языком программирования, процесс изучения C# только упростится, но иметь опыт программирования для чтения книги совершенно необязательно.

Из этой книги вы узнаете не только о типах, конструкциях и операторах языка C#, но и о ключевых концепциях объектно-ориентированного программирования, реализованных в этом языке, который в настоящее время представляет собой один из наиболее приспособленных для создания программ для Windows инструментов. Если вы в начале большого пути в программирование, смелее покупайте эту книгу: она послужит вам отличным путеводителем, который облегчит ваши первые шаги на этом длинном, но очень увлекательном пути.

 Узнайте, как создать консольное приложение и что такое делегаты, события и интерфейсы!

C# — мощный язык программирования, который стал любимым инструментом программистов, работающих с Visual Studio, и эта книга поможет вам быстро и безболезненно освоить новейшую его версию. Вы научитесь создавать приложения для Windows, использовать графику, потоки, контейнеры, базы данных и многое другое, узнаете, что такое .NET Framework, полиморфизм, наследование и обобщенное программирование, а также изучите множество других важных и интересных вещей.

В книге:

  • Создание приложений для Windows
  • Циклы и условные переходы
  • Синтаксис коллекций
  • Интерфейсы и объектно-ориентированные концепции
  • Делегаты и события
  • Безопасный код
  • Работа с разнообразными источниками данных
  • Создание приложений для работы в Интернете

Похожее:

Список отзывов:

Нет отзывов к книге.