C# для чайников 🔍
Джон Пол Мюллер при участии Билла Семпфа и Чака Сефа ; перевод с английского и редакция И. В. Красикова
Диалектика; Диалектика, Для чайников, Ведь это так просто!, Москва, Санкт-Петербург, Russia, 2019
俄语 [ru] · PDF · 53.5MB · 2019 · 📘 非小说类图书 · 🚀/lgli/lgrs/nexusstc/zlib · Save
描述
Оглавление
Содержание
Об авторе
Посвящение
Благодарности
Введение
Об этой книге
Глупые предположения
Пиктограммы, используемые в книге
Источники дополнительной информации
Что дальше
Ждем ваших отзывов!
Часть 1. Основы программирования на C#
Глава 1
Ваше первое консольное приложение на C#
Компьютерные языки, C# и .NET
Что такое программа
Что такое C#
Что такое .NET
Что такое Visual Studio 2017 и Visual C#
Создание первого консольного приложения
Создание исходной программы
Тестовая поездка
Заставим программу работать
Обзор консольного приложения
Каркас программы
Комментарии
Тело программы
Введение в хитрости панели элементов
Сохранение кода на панели элементов
Повторное использование кода из панели элементов
Глава 2
Работа с переменными
Объявление переменной
Что такое int
Правила объявления переменных
Вариации на тему int
Представление дробных чисел
Работа с числами с плавающей точкой
Объявление переменной с плавающей точкой
Ограничения переменных с плавающей точкой
Десятичные числа: комбинация целых чисел и чисел с плавающей точкой
Объявление переменных типа decimal
Сравнение десятичных и целых чисел, а также чисел с плавающей точкой
Логичен ли логический тип
Символьные типы
Тип char
Специальные символы
Тип string
Что такое тип-значение
Сравнение string и char
Вычисление високосных лет: DateTime
Объявление числовых констант
Преобразование типов
Позвольте компилятору C# вывести типы данных
Глава 3
Работа со строками
Неизменяемость строк
Основные операции над строками
Сравнение строк
Проверка равенства: метод Compare ()
Сравнение без учета регистра
Изменение регистра
Отличие строк в разных регистрах
Преобразование символов строки в символы верхнего или нижнего регистра
Цикл по строке
Поиск в строках
Как искать
Пуста ли строка
Получение введенной пользователем информации
Удаление пробельных символов
Анализ числового ввода
Обработка последовательности чисел
Объединение массива строк в одну строку
Управление выводом программы
Использование методов Trim () wPad()
Использование метода ConcatO
Использование метода Split ()
Форматирование строк
StringBuilder: эффективная работа со строками
Глава 4
Операторы
Арифметика
Простейшие операторы
Порядок выполнения операторов
Оператор присваивания
Оператор инкремента
Логично ли логическое сравнение
Сравнение чисел с плавающей точкой
Составные логические операторы
Тип выражения
Вычисление типа операции
Типы при присваивании
Перегрузка операторов
Глава 5
Управление потоком выполнения
Ветвление с использованием if и switch
Инструкция if
Инструкция else
Как избежать else
Вложенные инструкции if
Конструкция switch
Циклы
Цикл while
Цикл do. . .while
Операторы break и continue
Цикл без счетчика
Правила области видимости
Цикл for
Пример
Зачем нужны разные циклы
Вложенные циклы
Оператор goto
Глава 6
Глава для коллекционеров
Массивы C#
Зачем нужны массивы
Массив фиксированного размера
Массив переменного размера
Свойство Length
Инициализация массивов
Цикл foreach
Сортировка массива данных
Использование var для массивов
Коллекции C#
Синтаксис коллекций
Понятие
Обобщенные коллекции
Использование списков
Инстанцирование пустого списка
Создание списка целых чисел
Создание списка для хранения объектов
Преобразования списков в массивы и обратно
Подсчет количества элементов в списке
Поиск в списках
Прочие действия co списками
Использование словарей
Создание словаря
Поиск в словаре
Итерирование словаря
Инициализаторы массивов и коллекций
Инициализация массивов
Инициализация коллекций
Использование множеств
Выполнение специфичных для множеств задач
Создание множества
Добавление элемента в множество
Выполнение объединения
Пересечение множеств
Получение разности
Не используйте старые коллекции
Глава 7
Работа с коллекциями
Обход каталога файлов
Использование программы LoopThroughFiles
Начало программы
Получение начальных входных данных
Создание списка файлов
Форматирование вывода
Вывод в шестнадцатеричном формате
Обход коллекций: итераторы
Доступ к коллекции: общая задача
Использование foreach
Обращение к коллекциям как к массивам: индексаторы
Формат индексатора
Пример программы с использованием индексатора
Блок итератора
Создание каркаса блока итератора
Итерирование дней в месяцах
Что же такое коллекция
Синтаксис итератора
Блоки итераторов произвольного вида и размера
Глава 8
Обобщенность
Обобщенность в C#
Обобщенные классы безопасны
Обобщенные классы эффективны
Создание собственного обобщенного класса
Очередь посылок
Очередь с приоритетами
Распаковка пакета
Метод Main ()
Написание обобщенного кода
И наконец — обобщенная очередь с приоритетами
Использование простого необобщенного класса фабрики
Незавершенные дела
Пересмотр обобщенности
Вариантность
Контравариантность
Ковариантность
Глава 9
Эти исключительные исключения
Использование механизма исключений для сообщения об ошибках
О try-блоках
О catch-блоках
О finally-блоках
Что происходит при генерации исключения
Генерация исключений
Для чего нужны исключения
Исключительный пример
Что делает этот пример "исключительным"
Трассировка стека
Использование нескольких catch-блоков
Планирование стратегии обработки ошибок
Вопросы, помогающие при планировании
Советы по написанию кода с хорошей обработкой ошибок
Анализ возможных исключений метода
Как выяснить, какие исключения генерируются теми или иными методами
Последний шанс перехвата исключения
Генерирующие исключения выражения
Глава 10
Списки элементов с использованием перечислений
Перечисления в реальном мире
Работа с перечислениями
Использование ключевого слова enum
Создание перечислений с инициализаторами
Указание типа данных перечисления
Создание флагов-перечислений
Применение перечислений в конструкции switch
Часть 2. Объектно-ориентированное программирование на C#
Глава 11
Что такое объектно-ориентированное программирование
Объектно-ориентированная концепция No 1: абстракция
Процедурные поездки
Объектно-ориентированные поездки
Объектно-ориентированная концепция No 2: классификация
Зачем нужна классификация
Объектно-ориентированная концепция No 3: удобные интерфейсы
Объектно-ориентированная концепция No 3: управление доступом
Поддержка объектно- ориентированных концепций в C#
Глава 12
Немного о классах
Определение класса и объекта
Определение класса
Что такое объект
Доступ к членам объекта
Пример объектно-основанной программы
Различие между объектами
Работа со ссылками
Классы, содержащие классы
Статические члены класса
Определение константных членов-данных и членов-данных только для чтения
Глава 13
Методы
Определение и использование метода
Использование методов в ваших программах
Аргументы метода
Передача аргументов методу
Передача методу нескольких аргументов
Соответствие определений аргументов их использованию
Перегрузка методов
Реализация аргументов по умолчанию
Возврат значений из метода
Возврат значения оператором return
Определение метода без возвращаемого значения
Возврат нескольких значений с использованием кортежей
Кортеж с двумя элементами
Применение метода Create ()
Многоэлементные кортежи
Создание кортежей более чем с двумя элементами
Глава 14
Поговорим об этом
Передача объекта в метод
Определение методов
Определение статического метода
Определение метода экземпляра
Полное имя метода
Обращение к текущему объекту
Ключевое слово this
Когда this используется явно
Что делать при отсутствии this
Использование локальных функций
Глава 15
Класс: каждый сам за себя
Ограничение доступа к членам класса
Пример программы с использованием открытых членов
Прочие уровни безопасности
Зачем нужно управление доступом
Методы доступа
Пример управления доступом
Выводы
Определение свойств класса
Статические свойства
Побочные действия свойств
Дайте компилятору написать свойства для вас
Методы и уровни доступа
Конструирование объектов с помощью конструкторов
Конструкторы, предоставляемые C#
Замена конструктора по умолчанию
Конструирование объектов
Непосредственная инициализация объекта
Конструирование с инициализаторами
Инициализация объекта без конструктора
Применение членов с кодом
Создание методов с кодом
Определение свойств с кодом
Определение конструкторов и деструкторов с кодом
Определение методов доступа к свойствам с кодом
Определение методов доступа к событиям с кодом
Глава 16
Наследование
Наследование класса
Зачем нужно наследование
Более сложный пример наследования
ЯВЛЯЕТСЯ или СОДЕРЖИТ
Отношение ЯВЛЯЕТСЯ
Доступ к BankAccount через содержание
Отношение СОДЕРЖИТ
Когда использовать отношение ЯВЛЯЕТСЯ и когда — СОДЕРЖИТ
Поддержка наследования в C#
Заменяемость классов
Неверное преобразование времени выполнения
Избегание неверных преобразований с помощью оператора is
Избегание неверных преобразований с помощью оператора as
Класс object
Наследование и конструктор
Вызов конструктора по умолчанию базового класса
Передача аргументов конструктору базового класса
Указание конкретного конструктора базового класса
Обновленный класс BankAccount
Глава 17
Полиморфизм
Перегрузка унаследованного метода
Простейший случай перегрузки метода
Различные классы, различные методы
Сокрытие метода базового класса
Вызов методов базового класса
Полиморфизм
Что неверно в стратегии использования объявленного типа
Использование is для полиморфного доступа к скрытому методу
Объявление метода виртуальным и перекрытие
Получение максимальной выгоды от полиморфизма
Визитная карточка класса: метод ToStringO
Абстракционизм в C#
Разложение классов
Абстрактный класс: ничего, кроме идеи
Как использовать абстрактные классы
Создание абстрактных объектов невозможно
Опечатывание класса
Глава 18
Интерфейсы
Что значит МОЖЕТ_ИСПОЛЬЗОВАТЬСЯ_КАК
Что такое интерфейс
Реализация интерфейса
Именование интерфейсов
Зачем C# включает интерфейсы
Наследование и реализация интерфейса
Преимущества интерфейсов
Использование интерфейсов
Тип, возвращаемый методом
Базовый тип массива или коллекции
Более общий тип ссылки
Использование предопределенных типов интерфейсов C#
Пример программы, использующей отношение МОЖЕТ_ИСПОЛЬЗОВАТЬСЯ_КАК
Создание собственного интерфейса
Реализация интерфейса IComparable
Вернемся KMain()
Унификация иерархий классов
Что скрыто за интерфейсом
Наследование интерфейсов
Использование интерфейсов для внесения изменений в объектно- ориентированные программы
Гибкие зависимости через интерфейсы
Абстрактный или конкретный? Когда следует использовать абстрактный класс, а когда — интерфейс
Реализация отношения СОДЕРЖИТ с помощью интерфейсов
Глава 19
делегирование событий
Звонок домой: проблема обратного вызова
Определение делегата
Пример передачи кода
Делегирование задания
Очень простой первый пример
Более реальный пример
Обзор большего примера
Создание приложения
Знакомимся с кодом
Жизненный цикл делегата
Анонимные методы
События C#
Проектный шаблон Observer
Что такое событие. Публикация и подписка
Как издатель оповещает о своих событиях
Как подписаться на событие
Как опубликовать событие
Как передать обработчику события дополнительную информацию
Рекомендованный способ генерации событий
Как наблюдатели "обрабатывают" событие
Глава 20
Пространства имен и библиотеки
Разделение одной программы на несколько исходных файлов
Разделение единой программы на сборки
Выполнимый файл или библиотека
Сборки
Выполнимые файлы
Библиотеки классов
Объединение классов в библиотеки
Создание проекта библиотеки классов
Создание автономной библиотеки классов
Добавление второго проекта к существующему решению
Создание классов для библиотеки
Использование тестового приложения
Дополнительные ключевые слова для управления доступом
internal: строим глазки ЦРУ
protected: поделимся с подклассами
protected internal: более изощренная защита
Размещение классов в пространствах имен
Объявление пространств имен
Пространства имен и доступ
Использование полностью квалифицированных имен
Глава 21
Именованные и необязательные параметры
Изучение необязательных параметров
Ссылочные типы
Выходные параметры
Именованные параметры
Разрешение перегрузки
Альтернативные методы возврата значений
Работа с переменными out
Возврат значений по ссылке
Глава 22
Структуры
Сравнение структур и классов
Ограничения структур
Различия типов-значений
Когда следует использовать структуры
Создание структур
Определение базовой структуры
Добавление распространенных элементов структур
Использование структур как записей
Управление отдельной записью
Добавление структур в массивы
Перекрытие методов
Часть 3. Вопросы проектирования на C#
Глава 23
Написание безопасного кода
Проектирование безопасного программного обеспечения
Определение того, что следует защищать
Документирование компонентов программы
Разложение компонентов на функции
Оценка рисков
Построение безопасных приложений Windows
Аутентификация с использованием входа в Windows
Безопасность развертывания
Построение безопасных приложений Web Forms
Атаки SQL Injection
Уязвимости сценариев
Наилучшие методы защиты приложений Web Forms
Использование System. Security
Глава 24
Обращение к данным
Знакомство с System.Data
Классы данных и каркас
Получение данных
Использование пространства имен System.Data
Настройка образца схемы базы данных
Подключение к источнику данных
Работа с визуальными инструментами
Написание кода для работы с данными
Использование Entity Framework
Глава 25
Рыбалка в потоке
Где водится рыба: файловые потоки
Потоки
Читатели и писатели
Использование Streamwriter
Пример использования потока
Как это работает
Наконец-то мы пишем!
Использование конструкции using
Использование StreamReader
Еще о читателях и писателях
Другие виды потоков
Глава 26
Доступ к Интернету
Знакомство с System.Net
Как сетевые классы вписываются в каркас
Использование пространства имен System.Net
Проверка состояния сети
Загрузка файла из Интернета
Отчет по электронной почте
Регистрация сетевой активности
Глава 27
Создание изображений
Знакомство с System.Drawing
Графика
Перья
Кисти
Текст
Классы рисования и каркас .NET
Использование пространства имен System. Drawing
Приступая к работе
Настройка проекта
Обработка счета
Создание подключения к событию
Рисование доски
Запуск новой игры
Предметный указатель
Содержание
Об авторе
Посвящение
Благодарности
Введение
Об этой книге
Глупые предположения
Пиктограммы, используемые в книге
Источники дополнительной информации
Что дальше
Ждем ваших отзывов!
Часть 1. Основы программирования на C#
Глава 1
Ваше первое консольное приложение на C#
Компьютерные языки, C# и .NET
Что такое программа
Что такое C#
Что такое .NET
Что такое Visual Studio 2017 и Visual C#
Создание первого консольного приложения
Создание исходной программы
Тестовая поездка
Заставим программу работать
Обзор консольного приложения
Каркас программы
Комментарии
Тело программы
Введение в хитрости панели элементов
Сохранение кода на панели элементов
Повторное использование кода из панели элементов
Глава 2
Работа с переменными
Объявление переменной
Что такое int
Правила объявления переменных
Вариации на тему int
Представление дробных чисел
Работа с числами с плавающей точкой
Объявление переменной с плавающей точкой
Ограничения переменных с плавающей точкой
Десятичные числа: комбинация целых чисел и чисел с плавающей точкой
Объявление переменных типа decimal
Сравнение десятичных и целых чисел, а также чисел с плавающей точкой
Логичен ли логический тип
Символьные типы
Тип char
Специальные символы
Тип string
Что такое тип-значение
Сравнение string и char
Вычисление високосных лет: DateTime
Объявление числовых констант
Преобразование типов
Позвольте компилятору C# вывести типы данных
Глава 3
Работа со строками
Неизменяемость строк
Основные операции над строками
Сравнение строк
Проверка равенства: метод Compare ()
Сравнение без учета регистра
Изменение регистра
Отличие строк в разных регистрах
Преобразование символов строки в символы верхнего или нижнего регистра
Цикл по строке
Поиск в строках
Как искать
Пуста ли строка
Получение введенной пользователем информации
Удаление пробельных символов
Анализ числового ввода
Обработка последовательности чисел
Объединение массива строк в одну строку
Управление выводом программы
Использование методов Trim () wPad()
Использование метода ConcatO
Использование метода Split ()
Форматирование строк
StringBuilder: эффективная работа со строками
Глава 4
Операторы
Арифметика
Простейшие операторы
Порядок выполнения операторов
Оператор присваивания
Оператор инкремента
Логично ли логическое сравнение
Сравнение чисел с плавающей точкой
Составные логические операторы
Тип выражения
Вычисление типа операции
Типы при присваивании
Перегрузка операторов
Глава 5
Управление потоком выполнения
Ветвление с использованием if и switch
Инструкция if
Инструкция else
Как избежать else
Вложенные инструкции if
Конструкция switch
Циклы
Цикл while
Цикл do. . .while
Операторы break и continue
Цикл без счетчика
Правила области видимости
Цикл for
Пример
Зачем нужны разные циклы
Вложенные циклы
Оператор goto
Глава 6
Глава для коллекционеров
Массивы C#
Зачем нужны массивы
Массив фиксированного размера
Массив переменного размера
Свойство Length
Инициализация массивов
Цикл foreach
Сортировка массива данных
Использование var для массивов
Коллекции C#
Синтаксис коллекций
Понятие
Обобщенные коллекции
Использование списков
Инстанцирование пустого списка
Создание списка целых чисел
Создание списка для хранения объектов
Преобразования списков в массивы и обратно
Подсчет количества элементов в списке
Поиск в списках
Прочие действия co списками
Использование словарей
Создание словаря
Поиск в словаре
Итерирование словаря
Инициализаторы массивов и коллекций
Инициализация массивов
Инициализация коллекций
Использование множеств
Выполнение специфичных для множеств задач
Создание множества
Добавление элемента в множество
Выполнение объединения
Пересечение множеств
Получение разности
Не используйте старые коллекции
Глава 7
Работа с коллекциями
Обход каталога файлов
Использование программы LoopThroughFiles
Начало программы
Получение начальных входных данных
Создание списка файлов
Форматирование вывода
Вывод в шестнадцатеричном формате
Обход коллекций: итераторы
Доступ к коллекции: общая задача
Использование foreach
Обращение к коллекциям как к массивам: индексаторы
Формат индексатора
Пример программы с использованием индексатора
Блок итератора
Создание каркаса блока итератора
Итерирование дней в месяцах
Что же такое коллекция
Синтаксис итератора
Блоки итераторов произвольного вида и размера
Глава 8
Обобщенность
Обобщенность в C#
Обобщенные классы безопасны
Обобщенные классы эффективны
Создание собственного обобщенного класса
Очередь посылок
Очередь с приоритетами
Распаковка пакета
Метод Main ()
Написание обобщенного кода
И наконец — обобщенная очередь с приоритетами
Использование простого необобщенного класса фабрики
Незавершенные дела
Пересмотр обобщенности
Вариантность
Контравариантность
Ковариантность
Глава 9
Эти исключительные исключения
Использование механизма исключений для сообщения об ошибках
О try-блоках
О catch-блоках
О finally-блоках
Что происходит при генерации исключения
Генерация исключений
Для чего нужны исключения
Исключительный пример
Что делает этот пример "исключительным"
Трассировка стека
Использование нескольких catch-блоков
Планирование стратегии обработки ошибок
Вопросы, помогающие при планировании
Советы по написанию кода с хорошей обработкой ошибок
Анализ возможных исключений метода
Как выяснить, какие исключения генерируются теми или иными методами
Последний шанс перехвата исключения
Генерирующие исключения выражения
Глава 10
Списки элементов с использованием перечислений
Перечисления в реальном мире
Работа с перечислениями
Использование ключевого слова enum
Создание перечислений с инициализаторами
Указание типа данных перечисления
Создание флагов-перечислений
Применение перечислений в конструкции switch
Часть 2. Объектно-ориентированное программирование на C#
Глава 11
Что такое объектно-ориентированное программирование
Объектно-ориентированная концепция No 1: абстракция
Процедурные поездки
Объектно-ориентированные поездки
Объектно-ориентированная концепция No 2: классификация
Зачем нужна классификация
Объектно-ориентированная концепция No 3: удобные интерфейсы
Объектно-ориентированная концепция No 3: управление доступом
Поддержка объектно- ориентированных концепций в C#
Глава 12
Немного о классах
Определение класса и объекта
Определение класса
Что такое объект
Доступ к членам объекта
Пример объектно-основанной программы
Различие между объектами
Работа со ссылками
Классы, содержащие классы
Статические члены класса
Определение константных членов-данных и членов-данных только для чтения
Глава 13
Методы
Определение и использование метода
Использование методов в ваших программах
Аргументы метода
Передача аргументов методу
Передача методу нескольких аргументов
Соответствие определений аргументов их использованию
Перегрузка методов
Реализация аргументов по умолчанию
Возврат значений из метода
Возврат значения оператором return
Определение метода без возвращаемого значения
Возврат нескольких значений с использованием кортежей
Кортеж с двумя элементами
Применение метода Create ()
Многоэлементные кортежи
Создание кортежей более чем с двумя элементами
Глава 14
Поговорим об этом
Передача объекта в метод
Определение методов
Определение статического метода
Определение метода экземпляра
Полное имя метода
Обращение к текущему объекту
Ключевое слово this
Когда this используется явно
Что делать при отсутствии this
Использование локальных функций
Глава 15
Класс: каждый сам за себя
Ограничение доступа к членам класса
Пример программы с использованием открытых членов
Прочие уровни безопасности
Зачем нужно управление доступом
Методы доступа
Пример управления доступом
Выводы
Определение свойств класса
Статические свойства
Побочные действия свойств
Дайте компилятору написать свойства для вас
Методы и уровни доступа
Конструирование объектов с помощью конструкторов
Конструкторы, предоставляемые C#
Замена конструктора по умолчанию
Конструирование объектов
Непосредственная инициализация объекта
Конструирование с инициализаторами
Инициализация объекта без конструктора
Применение членов с кодом
Создание методов с кодом
Определение свойств с кодом
Определение конструкторов и деструкторов с кодом
Определение методов доступа к свойствам с кодом
Определение методов доступа к событиям с кодом
Глава 16
Наследование
Наследование класса
Зачем нужно наследование
Более сложный пример наследования
ЯВЛЯЕТСЯ или СОДЕРЖИТ
Отношение ЯВЛЯЕТСЯ
Доступ к BankAccount через содержание
Отношение СОДЕРЖИТ
Когда использовать отношение ЯВЛЯЕТСЯ и когда — СОДЕРЖИТ
Поддержка наследования в C#
Заменяемость классов
Неверное преобразование времени выполнения
Избегание неверных преобразований с помощью оператора is
Избегание неверных преобразований с помощью оператора as
Класс object
Наследование и конструктор
Вызов конструктора по умолчанию базового класса
Передача аргументов конструктору базового класса
Указание конкретного конструктора базового класса
Обновленный класс BankAccount
Глава 17
Полиморфизм
Перегрузка унаследованного метода
Простейший случай перегрузки метода
Различные классы, различные методы
Сокрытие метода базового класса
Вызов методов базового класса
Полиморфизм
Что неверно в стратегии использования объявленного типа
Использование is для полиморфного доступа к скрытому методу
Объявление метода виртуальным и перекрытие
Получение максимальной выгоды от полиморфизма
Визитная карточка класса: метод ToStringO
Абстракционизм в C#
Разложение классов
Абстрактный класс: ничего, кроме идеи
Как использовать абстрактные классы
Создание абстрактных объектов невозможно
Опечатывание класса
Глава 18
Интерфейсы
Что значит МОЖЕТ_ИСПОЛЬЗОВАТЬСЯ_КАК
Что такое интерфейс
Реализация интерфейса
Именование интерфейсов
Зачем C# включает интерфейсы
Наследование и реализация интерфейса
Преимущества интерфейсов
Использование интерфейсов
Тип, возвращаемый методом
Базовый тип массива или коллекции
Более общий тип ссылки
Использование предопределенных типов интерфейсов C#
Пример программы, использующей отношение МОЖЕТ_ИСПОЛЬЗОВАТЬСЯ_КАК
Создание собственного интерфейса
Реализация интерфейса IComparable
Вернемся KMain()
Унификация иерархий классов
Что скрыто за интерфейсом
Наследование интерфейсов
Использование интерфейсов для внесения изменений в объектно- ориентированные программы
Гибкие зависимости через интерфейсы
Абстрактный или конкретный? Когда следует использовать абстрактный класс, а когда — интерфейс
Реализация отношения СОДЕРЖИТ с помощью интерфейсов
Глава 19
делегирование событий
Звонок домой: проблема обратного вызова
Определение делегата
Пример передачи кода
Делегирование задания
Очень простой первый пример
Более реальный пример
Обзор большего примера
Создание приложения
Знакомимся с кодом
Жизненный цикл делегата
Анонимные методы
События C#
Проектный шаблон Observer
Что такое событие. Публикация и подписка
Как издатель оповещает о своих событиях
Как подписаться на событие
Как опубликовать событие
Как передать обработчику события дополнительную информацию
Рекомендованный способ генерации событий
Как наблюдатели "обрабатывают" событие
Глава 20
Пространства имен и библиотеки
Разделение одной программы на несколько исходных файлов
Разделение единой программы на сборки
Выполнимый файл или библиотека
Сборки
Выполнимые файлы
Библиотеки классов
Объединение классов в библиотеки
Создание проекта библиотеки классов
Создание автономной библиотеки классов
Добавление второго проекта к существующему решению
Создание классов для библиотеки
Использование тестового приложения
Дополнительные ключевые слова для управления доступом
internal: строим глазки ЦРУ
protected: поделимся с подклассами
protected internal: более изощренная защита
Размещение классов в пространствах имен
Объявление пространств имен
Пространства имен и доступ
Использование полностью квалифицированных имен
Глава 21
Именованные и необязательные параметры
Изучение необязательных параметров
Ссылочные типы
Выходные параметры
Именованные параметры
Разрешение перегрузки
Альтернативные методы возврата значений
Работа с переменными out
Возврат значений по ссылке
Глава 22
Структуры
Сравнение структур и классов
Ограничения структур
Различия типов-значений
Когда следует использовать структуры
Создание структур
Определение базовой структуры
Добавление распространенных элементов структур
Использование структур как записей
Управление отдельной записью
Добавление структур в массивы
Перекрытие методов
Часть 3. Вопросы проектирования на C#
Глава 23
Написание безопасного кода
Проектирование безопасного программного обеспечения
Определение того, что следует защищать
Документирование компонентов программы
Разложение компонентов на функции
Оценка рисков
Построение безопасных приложений Windows
Аутентификация с использованием входа в Windows
Безопасность развертывания
Построение безопасных приложений Web Forms
Атаки SQL Injection
Уязвимости сценариев
Наилучшие методы защиты приложений Web Forms
Использование System. Security
Глава 24
Обращение к данным
Знакомство с System.Data
Классы данных и каркас
Получение данных
Использование пространства имен System.Data
Настройка образца схемы базы данных
Подключение к источнику данных
Работа с визуальными инструментами
Написание кода для работы с данными
Использование Entity Framework
Глава 25
Рыбалка в потоке
Где водится рыба: файловые потоки
Потоки
Читатели и писатели
Использование Streamwriter
Пример использования потока
Как это работает
Наконец-то мы пишем!
Использование конструкции using
Использование StreamReader
Еще о читателях и писателях
Другие виды потоков
Глава 26
Доступ к Интернету
Знакомство с System.Net
Как сетевые классы вписываются в каркас
Использование пространства имен System.Net
Проверка состояния сети
Загрузка файла из Интернета
Отчет по электронной почте
Регистрация сетевой активности
Глава 27
Создание изображений
Знакомство с System.Drawing
Графика
Перья
Кисти
Текст
Классы рисования и каркас .NET
Использование пространства имен System. Drawing
Приступая к работе
Настройка проекта
Обработка счета
Создание подключения к событию
Рисование доски
Запуск новой игры
Предметный указатель
备用文件名
lgrsnf/C_Dly_Chaynikov_2019.pdf
备用文件名
zlib/Computers/Programming/Джон Пол Мюллер при участии Билла Семпфа и Чака Сефа/C# для чайников_5540811.pdf
备选作者
Джон Пол Мюллер при участии Билла Семпфа и Чака Сфера; перевод с английского и редакция И. В. Красикова
备选作者
Мюллер, Джон Пол
备用出版商
Dialektika
备用版本
Москва, Санкт-Петербург, Russia, 2020
备用版本
Russia, Russian Federation
元数据中的注释
lg2528620
元数据中的注释
{"isbns":["5907144432","9785907144439"],"publisher":"Диалектика","series":"Для чайников; Ведь это так просто!"}
元数据中的注释
Предм. указ.: с. 591-596
Пер.: Mueller, John Paul C 7.0 for dummies 978-5-119-42811-4
Пер.: Mueller, John Paul C 7.0 for dummies 978-5-119-42811-4
元数据中的注释
РГБ
元数据中的注释
Russian State Library [rgb] MARC:
=001 010058846
=005 20190815140119.0
=008 190813s2019\\\\ru\||||\\\\\\\0||\u\rus|d
=017 \\ $a КН-П-19-056911 $b RuMoRKP
=020 \\ $a 978-5-907144-43-9 $c 500 экз.
=040 \\ $a RuMoRGB $b rus $e rcr
=041 1\ $a rus $h eng
=044 \\ $a ru
=084 \\ $a З973.2-018.19C я78-1 $2 rubbk
=100 1\ $a Мюллер, Джон Пол
=245 00 $a C для чайников $c Джон Пол Мюллер при участии Билла Семпфа и Чака Сефа ; перевод с английского и редакция И. В. Красикова
=260 \\ $a Москва $b Диалектика ; $a Санкт-Петербург $b Диалектика $c 2019
=300 \\ $a 596 с. $b ил., табл. $c 24 см
=336 \\ $a Текст (визуальный)
=337 \\ $a непосредственный
=490 0\ $a Для чайников
=490 0\ $a Ведь это так просто!
=500 \\ $a Предм. указ.: с. 591-596
=534 \\ $p Пер.: $a Mueller, John Paul $t C 7.0 for dummies $z 978-5-119-42811-4
=650 \7 $a Техника. Технические науки -- Энергетика. Радиоэлектроника -- Радиоэлектроника -- Вычислительная техника -- Электронные вычислительные машины (компьютеры) -- Цифровые электронные вычислительные машины. Программирование -- Теория. Исследования -- Программирование -- Языки программирования -- Отдельные языки и программирование на них -- C -- Пособие для самообразования $2 rubbk
=700 1\ $a Семпф, Билл
=700 1\ $a Сфер, Чак
=852 \\ $a РГБ $b FB $j 2 19-43/339 $x 90
=852 \\ $a РГБ $b FB $j 2 19-76/410 $x 90
=001 010058846
=005 20190815140119.0
=008 190813s2019\\\\ru\||||\\\\\\\0||\u\rus|d
=017 \\ $a КН-П-19-056911 $b RuMoRKP
=020 \\ $a 978-5-907144-43-9 $c 500 экз.
=040 \\ $a RuMoRGB $b rus $e rcr
=041 1\ $a rus $h eng
=044 \\ $a ru
=084 \\ $a З973.2-018.19C я78-1 $2 rubbk
=100 1\ $a Мюллер, Джон Пол
=245 00 $a C для чайников $c Джон Пол Мюллер при участии Билла Семпфа и Чака Сефа ; перевод с английского и редакция И. В. Красикова
=260 \\ $a Москва $b Диалектика ; $a Санкт-Петербург $b Диалектика $c 2019
=300 \\ $a 596 с. $b ил., табл. $c 24 см
=336 \\ $a Текст (визуальный)
=337 \\ $a непосредственный
=490 0\ $a Для чайников
=490 0\ $a Ведь это так просто!
=500 \\ $a Предм. указ.: с. 591-596
=534 \\ $p Пер.: $a Mueller, John Paul $t C 7.0 for dummies $z 978-5-119-42811-4
=650 \7 $a Техника. Технические науки -- Энергетика. Радиоэлектроника -- Радиоэлектроника -- Вычислительная техника -- Электронные вычислительные машины (компьютеры) -- Цифровые электронные вычислительные машины. Программирование -- Теория. Исследования -- Программирование -- Языки программирования -- Отдельные языки и программирование на них -- C -- Пособие для самообразования $2 rubbk
=700 1\ $a Семпф, Билл
=700 1\ $a Сфер, Чак
=852 \\ $a РГБ $b FB $j 2 19-43/339 $x 90
=852 \\ $a РГБ $b FB $j 2 19-76/410 $x 90
元数据中的注释
Предм. указ.: с. 591-596
Пер.: Mueller, John Paul C 7.0 all-in-one for dummies 978-111-9-42811-4
Пер.: Mueller, John Paul C 7.0 all-in-one for dummies 978-111-9-42811-4
元数据中的注释
Russian State Library [rgb] MARC:
=001 010233680
=005 20200131134132.0
=008 200123s2020\\\\ru\\\\\\\\\\\\0||\|\rus|d
=017 \\ $a КН-П-20-003138 $b RuMoRKP
=020 \\ $a 978-5-907144-43-9 $c 500 экз.
=040 \\ $a RuMoRGB $b rus $e rcr
=041 1\ $a rus $h eng
=044 \\ $a ru
=084 \\ $a З973.2-018.19C я78-1 $2 rubbk
=100 1\ $a Мюллер, Джон Пол
=245 00 $a C для чайников $c Джон Пол Мюллер при участии Билла Семпфа и Чака Сфера ; перевод с английского и редакция И. В. Красикова
=260 \\ $a Москва $b Диалектика ; $a Санкт-Петербург $b Диалектика $c 2020
=300 \\ $a 596 с. $b ил. $c 24 см
=336 \\ $a Текст (визуальный)
=337 \\ $a непосредственный
=500 \\ $a Предм. указ.: с. 591-596
=534 \\ $p Пер.: $a Mueller, John Paul $t C 7.0 all-in-one for dummies $z 978-111-9-42811-4
=650 \7 $a Техника. Технические науки -- Энергетика. Радиоэлектроника -- Радиоэлектроника -- Вычислительная техника -- Электронные вычислительные машины (компьютеры) -- Цифровые электронные вычислительные машины. Программирование -- Теория. Исследования -- Программирование -- Языки программирования -- Отдельные языки и программирование на них -- C -- Пособие для самообразования $2 rubbk
=700 1\ $a Семпф, Билл
=700 1\ $a Сфер, Чак
=852 \\ $a РГБ $b FB $j 2 20-7/67 $x 90
=852 \\ $a РГБ $b ORF $x 82
=001 010233680
=005 20200131134132.0
=008 200123s2020\\\\ru\\\\\\\\\\\\0||\|\rus|d
=017 \\ $a КН-П-20-003138 $b RuMoRKP
=020 \\ $a 978-5-907144-43-9 $c 500 экз.
=040 \\ $a RuMoRGB $b rus $e rcr
=041 1\ $a rus $h eng
=044 \\ $a ru
=084 \\ $a З973.2-018.19C я78-1 $2 rubbk
=100 1\ $a Мюллер, Джон Пол
=245 00 $a C для чайников $c Джон Пол Мюллер при участии Билла Семпфа и Чака Сфера ; перевод с английского и редакция И. В. Красикова
=260 \\ $a Москва $b Диалектика ; $a Санкт-Петербург $b Диалектика $c 2020
=300 \\ $a 596 с. $b ил. $c 24 см
=336 \\ $a Текст (визуальный)
=337 \\ $a непосредственный
=500 \\ $a Предм. указ.: с. 591-596
=534 \\ $p Пер.: $a Mueller, John Paul $t C 7.0 all-in-one for dummies $z 978-111-9-42811-4
=650 \7 $a Техника. Технические науки -- Энергетика. Радиоэлектроника -- Радиоэлектроника -- Вычислительная техника -- Электронные вычислительные машины (компьютеры) -- Цифровые электронные вычислительные машины. Программирование -- Теория. Исследования -- Программирование -- Языки программирования -- Отдельные языки и программирование на них -- C -- Пособие для самообразования $2 rubbk
=700 1\ $a Семпф, Билл
=700 1\ $a Сфер, Чак
=852 \\ $a РГБ $b FB $j 2 20-7/67 $x 90
=852 \\ $a РГБ $b ORF $x 82
开源日期
2020-05-27
🚀 快速下载
成为会员以支持书籍、论文等的长期保存。为了感谢您对我们的支持,您将获得高速下载权益。❤️
🐢 低速下载
由可信的合作方提供。 更多信息请参见常见问题解答。 (可能需要验证浏览器——无限次下载!)
- 低速服务器(合作方提供) #1 (稍快但需要排队)
- 低速服务器(合作方提供) #2 (稍快但需要排队)
- 低速服务器(合作方提供) #3 (稍快但需要排队)
- 低速服务器(合作方提供) #4 (稍快但需要排队)
- 低速服务器(合作方提供) #5 (无需排队,但可能非常慢)
- 低速服务器(合作方提供) #6 (无需排队,但可能非常慢)
- 低速服务器(合作方提供) #7 (无需排队,但可能非常慢)
- 低速服务器(合作方提供) #8 (无需排队,但可能非常慢)
- 下载后: 在我们的查看器中打开
所有选项下载的文件都相同,应该可以安全使用。即使这样,从互联网下载文件时始终要小心。例如,确保您的设备更新及时。
外部下载
-
对于大文件,我们建议使用下载管理器以防止中断。
推荐的下载管理器:Motrix -
您将需要一个电子书或 PDF 阅读器来打开文件,具体取决于文件格式。
推荐的电子书阅读器:Anna的档案在线查看器、ReadEra和Calibre -
使用在线工具进行格式转换。
推荐的转换工具:CloudConvert和PrintFriendly -
您可以将 PDF 和 EPUB 文件发送到您的 Kindle 或 Kobo 电子阅读器。
推荐的工具:亚马逊的“发送到 Kindle”和djazz 的“发送到 Kobo/Kindle” -
支持作者和图书馆
✍️ 如果您喜欢这个并且能够负担得起,请考虑购买原版,或直接支持作者。
📚 如果您当地的图书馆有这本书,请考虑在那里免费借阅。
下面的文字仅以英文继续。
总下载量:
“文件的MD5”是根据文件内容计算出的哈希值,并且基于该内容具有相当的唯一性。我们这里索引的所有影子图书馆都主要使用MD5来标识文件。
一个文件可能会出现在多个影子图书馆中。有关我们编译的各种数据集的信息,请参见数据集页面。
有关此文件的详细信息,请查看其JSON 文件。 Live/debug JSON version. Live/debug page.