Оглавление.
- Принципы объектно-ориентированного программирования
- Введение в Microsoft .NET
- Hello, C Sharp
- Ваше первое приложение на C Sharp.
- Выбор редактора.
- «Hello, World».
- Запуск компилятора из командной строки.
- Запуск приложения.
- Экскурсия по коду.
- Универсальное программирование.
- Классы и члены.
- Метод Main.
- Метод System.Console.WriteLine.
- Пространства имен и директива using.
- «Скелет» программы.
- Что-то пошло не так!
- Ошибки периода компиляции.
- Глубокое погружение с помощью ILDASM.
- «Hello, World» в MSIL.
- Основы программирования на C Sharp.
- Когда нужны собственные пространства имен.
- Рекомендации по изобретению имен.
- Стандарты соглашения по назначению имен.
- Система типов
- Любая сущность — объект.
- Размерные и ссылочные типы.
- Размерные типы.
- Ссылочные типы.
- Упаковка и распаковка.
- Корень всех типов: System.Object.
- Типы и псевдонимы.
- Приведение типов.
- Пространства имен.
- Ключевое слово using.
- Преимущества использования CTS.
- Возможность взаимодействия языков.
- Иерархия объектов с единым корнем.
- Безопасность типов.
- Классы
- Определение классов
- Члены класса
- Модификаторы доступа
- Метод Main
- Аргументы командной строки
- Возвращаемые значения
- Несколько методов Main
- Конструкторы
- Статические члены и члены экземпляров
- Инициализаторы конструкторов
- Константы и неизменяемые поля
- Константы
- Неизменяемые поля
- Очистка объектов и управление ресурсами
- Немного истории
- Детерминированное завершение
- Производительность
- Совершенное решение
- Почти совершенное решение
- Использование метода Dispose
- Наследование
- Использование нескольких интерфейсов
- Изолированные классы
- Методы
- Свойства, массивы и индексаторы
- Свойства как «умные» поля
- Определение и использование свойств
- Чем занимается компилятор на самом деле
- Неизменяемые свойства
- Наследование свойств
- Дополнительные возможности использования свойств
- Массивы
- Объявление массивов
- Пример одномерного массива
- Многомерные массивы
- Запрос ранга массива
- Невыровненные массивы
- Работа с объектами как с массивами с помощью индексаторов
- Определение индексаторов
- Пример индексатора
- Правила разработки
- Атрибуты
- Что такое атрибуты.
- Определение атрибутов.
- Запрос атрибутов.
- Атрибуты класса.
- Атрибуты метода.
- Атрибуты поля.
- Параметры атрибута.
- Позиционные и именованные параметры.
- Распространенные ошибки при использовании именованных параметров.
- Допустимые типы параметров атрибутов.
- Атрибут AttributeUsage.
- Определение целевого типа атрибута.
- Атрибуты однократного и многократного использования.
- Задание правил наследования атрибутов.
- Идентификаторы атрибутов.
- Интерфейсы
- Применение интерфейсов.
- Объявление интерфейсов.
- Реализация интерфейсов.
- Запрос о реализации интерфейса с помощью is.
- Запрос о реализации интерфейса с помощью as.
- Явная квалификация имени члена интерфейса.
- Сокрытие имени с помощью интерфейсов.
- Избежание неоднозначности имен.
- Интерфейсы и наследование.
- Комбинирование интерфейсов.
- Выражения и операторы
- Обработка ошибок с помощью исключений
- Обзор обработки исключений
- Основной синтаксис обработки исключений
- Передача исключения
- Улавливание исключения
- Повторная передача исключения
- Освобождение ресурсов с помощью finally
- Сравнение методов обработки ошибок
- Преимущества обработки исключений над применением кодов возврата
- Обработка ошибок в правильном контексте
- Улучшение читабельности кода
- Передача исключений из конструкторов
- Класс System. Exception
- Конструирование объекта Exception
- Свойство StackTrace
- Улавливание множества типов исключений
- Получение собственных классов Exception
- Разработка собственного кода с обработкой исключений
- Проблемы создания блоков try
- Проблемы создания блоков catch
- Перегрузка операторов и нестандартные преобразования
- Делегаты и обработчики событий
- Программирование многопоточности
- Основы организации потоков.
- Потоки и многозадачность.
- Переключение контекста.
- Многопоточное приложение на C Sharp.
- Работа с потоками.
- AppDomain.
- Класс Thread.
- Планирование потоков.
- Безопасность и синхронизация потоков.
- Защита кода с помощью класса Monitor.
- Применение блокировок монитора с оператором C Sharp lock.
- Синхронизация кода с помощью класса Mutex.
- Безопасность потоков и классы .NET.
- Правила использования потоков.
- Когда использовать потоки.
- Когда лучше обойтись без потоков.
- Получение метаданных с помощью отражения
- Взаимодействие с неуправляемым кодом
- Platform Invocation Services
- Объявление экспортированной функции DLL
- Использование функций обратного вызова на C Sharp
- Преобразование и PInvoke
- Написание небезопасного кода
- Использование указателей в C Sharp
- Оператор fixed
- Взаимодействие с СОМ
- О, дивный новый мир!
- Приступим к делу
- Генерация метаданных из библиотеки типов СОМ
- Раннее связывание с компонентами СОМ
- Использование динамического определения типов для выбора интерфейсов СОМ
- Позднее связывание с компонентами СОМ
- Модели потоков в СОМ
- Работа со сборками
- Обзор сборок
- Данные в декларации
- Преимущества сборок
- Упаковка сборки
- Развертывание сборки
- Управление версиями сборки
- Создание сборок
- Создание сборок из нескольких модулей
- Совместно используемые сборки
- Работа с глобальным кэшем сборок
- Просмотр кэша
- Управление версиями сборок
- QFE и политика управления версиями по умолчанию
- Создание файла конфигурации для безопасного режима