Статистика |
---|
Онлайн всего: 1 Гостей: 1 Пользователей: 0 |
|
Содержание книги "Язык программирования С# 2008 и платформа .NET 3.5"
Эндрю Троелсен
Язык программирования С# 2008 и платформа .NET 3.5
Скриншот из книги:
СОДЕРЖАНИЕ
Об авторе О техническом редакторе Благодарности
Введение Автор и читатель — одна команда ..32 Краткий обзор содержания ..33
Часть I. Общие сведения о языке С# и платформе .NET ..33 Часть II. Главные конструкции программирования на С# ..34 Часть III. Дополнительные конструкции программирования на С# ..35 Часть IV. Программирование с использованием сборок .NET ..36 Часть V. Введение в библиотеки базовых классов .NET ..38 Часть VI. Настольные пользовательские интерфейсы ..39 Часть VII. Построение веб-приложений с использованием ASP.NET ..40 Часть VIII. Приложения ..41
Исходный код примеров ..42 От издательства ..42
ЧАСТЬ I. Общие сведения о языке С# и платформе .NET
Глава 1. Философия .NET
Предыдущее состояние дел ..44 Подход С/Win32 API ..45 Подход C++/MFC ..45 Подход Visual Basic 6.0 ..45 Подход Java/J2EE ..46 Подход СОМ ..46 Подход Windows DNA ..47 Решение .NET ..48 Знакомство с главными компонентами платформы .NET (CLR, CTS и CLS) ..48 Роль библиотек базовых классов ..49 Что привносит язык С# ..49 Другие языки программирования с поддержкой .NET ..51 Жизнь в многоязычном окружении ..53 Что собой представляют сборки в .NET ..53 Однофайловые и многофайловые сборки ..55 Роль CIL ..55 Преимущества CIL ..57 Компиляция CIL-кода в инструкции, ориентированные на конкретную платформу ..58 Роль метаданных типов .NET ..58 Роль манифеста сборки ..59 Что собой представляет общая система типов (CTS) ..60 Типы классов ..60 Типы интерфейсов ..61 Типы структур ..61 Типы перечислений ..62 Типы делегатов ..62 Члены типов ..62 Встроенные типы данных CTS ..63 Что собой представляет общеязыковая спецификация (CLS) ..64 Обеспечение гарантии соответствия CLS ..65 Что собой представляет общеязыковая исполняющая среда (CLR) ..66 Различия между сборками, пространствами имен и типами ..67 Роль, которую исполняют пространства имен Microsoft ..70 Получение доступа к пространствам имен программным образом ..71 Добавление ссылок на внешние сборки ..72 Изучение сборки с помощью утилиты ildasm.exe ..73 Просмотр CIL-кода ..74 Просмотр метаданных типов ..74 Просмотр метаданных сборки (т.е. манифеста) ..74 Изучение сборки с помощью утилиты Reflector ..75 Развертывание исполняющей среды .NET ..76 Не зависимая от платформы природа .NET ..76 Резюме ..78
Глава 2. Создание приложений на языке С#
Роль, которую исполняет .NET Framework 3.5 SDK ..79 Окно командной строки Visual Studio ..80 Построение приложений на С# с использованием csc.exe ..81 Указание целевых входных и выходных параметров ..82 Добавление ссылок на внешние сборки ..83 Добавление ссылок на несколько внешних сборок ..84 Компиляция нескольких файлов исходного кода ..84 Работа с ответными файлами в С# ..85 Создание .NET-приложений с использованием TfextPad ..87 Активизация функции выделения ключевых слов С# цветом ..87 Настройка фильтра файлов *.сs ..87 Подключение к csc.exe ..89 Ассоциирование команд выполнения с пунктами меню ..90 Создание приложений .NET с использованием Notepad++ ..91 Настройка списка вариантов для автоматического завершения кода ..92 Создание .NET-приложений с использованием SharpDevelop ..92 Построение простого тестового проекта ..93 Создание .NET-приложений с использованием Visual С# 2008 Express ..95 Некоторые уникальные функциональные возможности Visual С# Express ..95 Создание .NET-приложений с использованием Visual Studio 2008 ..96 Некоторые уникальные функциональные возможности Visual Studio 2008 ..97 Ориентирование на .NET Framework с использованием диалогового окна New Project ..97 Использование утилиты Solution Explorer ..98 Утилита Class View ..100 Утилита Object Browser ..100 Встроенная поддержка для рефакторинга программного кода ..101 Возможности для расширения и завертывания кода в определенный контекст ..103 Утилита Class Designer ..104 Инструмент Object Ttest Bench ..107 Интегрированная система документации .NET Framework 3.5 ..108 Дополнительные средства разработки .NET-приложений ..109 Резюме ..109
ЧАСТЬ II. Главные конструкции программирования на С#
Глава 3. Главные конструкции программирования на С#: часть I
Разбор простой программы на С# ..112 Варианты метода Мain() ..114 Спецификация кода ошибки в приложении ..114 Обработка аргументов командной строки ..116 Указание аргументов командной строки в Visual Studio 2008 ..118 Интересное отклонение от темы: некоторые дополнительные члены класса System.Environment ..118 Класс System.Console ..119 Базовый ввод и вывод с помощью Console ..120 Форматирование консольного вывода ..121 Форматирование числовых данных ..122 Форматирование числовых данных за пределами консольных приложений ..123 Системные типы данных и их сокращенное обозначение в С# ..124 Объявление и инициализация переменных ..125 Применение ключевого слова new для внутренних типов данных ..127 Иерархия классов типов данных ..127 Члены числовых типов данных ..129 Члены System.Boolean ..130 Члены System.Char ..130 Выполнение синтаксического анализа значений из строковых данных ..131 Тип System.String ..131 Базовые операции манипулирования строками ..132 Конкатенация строк ..133 Управляющие последовательности символов ..134 Определение дословных строк ..135 Строки и равенство ..135 Неизменная природа строк ..136 Тип System.Text.StringBuilder ..138 Типы System.DateTime и System.TimeSpan ..139 Сужающие и расширяющие преобразования типов данных ..140 Перехват сужающих преобразований данных ..142 Настройка проверки переполнения в масштабах всего проекта ..144 Ключевое слово unchecked ..145 Роль System.Convert ..145 Итерационные конструкции в С# ..145 Цикл for ..146 Цикл foreach ..146 Конструкции while и do/while ..147 Конструкции принятия решений и операции отношения и равенства ..147 Оператор if/else ..148 Оператор switch ..149 Резюме ..150
Глава 4. Главные конструкции программирования на С#: часть II
Методы и модификаторы параметров ..151 Используемое по умолчанию поведение для передачи параметров ..152 Модификатор out ..153 Модификатор ref ..154 Модификатор params ..155 Перегрузка методов ..157 Манипулирование массивами в С# ..159 Синтаксис инициализации массивов в С# ..160 Определение массива объектов ..161 Работа с многомерными массивами ..162 Использование массивов в качестве параметров (и возвращаемых значений) ..163 Базовый класс System.Аrray ..164 Тип enum ..165 Управление базовым типом, используемым для хранения значений перечислений ..166 Объявление и использование перечислений ..167 Тип System.Enum ..168 Динамическое обнаружение пар имя/значение перечисления ..168 Типы структур ..171 Создание переменных структур ..172 Типы-значения и ссылочные типы ..173 Типы-значения, ссылочные типы и операция присваивания ..174 Типы-значения, содержащие ссылочные типы ..176 Передача ссылочных типов по значению ..178 Передача ссылочных типов по ссылке ..179 Типы-значения и ссылочные типы: заключительные детали ..180 Нулевые типы в С# ..181 Работа с нулевыми типами ..183 Операция ?? ..183 Резюме ..184
Глава 5. Определение инкапсулированных типов классов
Знакомство с типом класса С# ..185 Размещение объектов с помощью ключевого слова new ..187 Понятие конструктора класса ..188 Роль конструктора по умолчанию ..189 Определение специальных конструкторов ..189 Еще раз о конструкторе по умолчанию ..190 Роль ключевого слова this ..191 Построение цепочки вызовов конструкторов с использованием this ..193 Обзор потока конструктора ..195 Понятие ключевого слова static ..196 Определение статических методов (и полей) ..197 Определение статических данных ..197 Определение статических конструкторов ..200 Определение статических классов ..201 Основы объектно-ориентированного программирования ..203 Роль инкапсуляции ..203 Роль наследования ..204 Роль полиморфизма ..205 Модификаторы доступа С# ..206 Модификаторы доступа по умолчанию ..207 Модификаторы доступа и вложенные типы ..208 Первый принцип: службы инкапсуляции С# ..208 Инкапсуляция с использованием традиционных методов доступа и изменения ..209 Инкапсуляция с использованием свойств типа ..210 Внутреннее представление свойств ..212 Управление уровнями видимости операторов get/set свойств ..214 Свойства, доступные только для чтения и только для записи ..214 Статические свойства ..215 Понятие константных данных ..216 Понятие полей только для чтения ..217 Статические поля только для чтения ..218 Понятие частичных типов ..218 Документирование исходного кода С# посредством XML ..219 Генерация файла XML ..221 Трансформация XML-комментариев кода посредством NDoc ..223 Визуализация плодов нашего труда ..224 Резюме ..225
Глава 6. Понятия наследования и полиморфизма
Базовый механизм наследования ..226 Спецификация родительского класса ..227 О множественном наследовании ..228 Ключевое слово sealed ..229 Изменение диаграмм классов Visual Studio ..230 Второй принцип: подробности о наследовании ..231 Управление созданием базового класса с помощью ключевого слова base ..233 Хранение фамильных тайн: ключевое слово protected ..235 Добавление герметизированного класса ..235 Реализация модели включения/делегации ..236 Понятие определения вложенных типов ..238 Третий принцип: поддержка полиморфизма в С# ..239 Ключевые слова virtual и override ..240 Переопределение виртуальных членов в Visual Studio 2008 ..242 Герметизированные виртуальные члены ..243 Понятие абстрактных классов ..243 Построение полиморфного интерфейса ..245 Понятие сокрытия членов ..248 Понятие правил приведения к базовому и производному классу ..250 Ключевое слово as ..251 Ключевое слово is ..252 Родительский главный класс System.Object ..252 Переопределение System.Object.ToString() ..255 Переопределение System.Object.Equals() ..256 Переопределение System.Object.GetHashCode() ..257 Тестирование модифицированного класса Person ..257 Статические члены System.Object ..258 Резюме ..258
Глава 7. Структурированная обработка исключений
Ода ошибкам и исключениям ..259 Роль обработки исключений в .NET ..260 Элементы обработки исключений в .NET ..261 Базовый класс System.Exception ..262 Простейший пример ..263 Выдача обобщенного исключения ..265 Перехват исключений ..266 Конфигурирование состояния исключения ..267 Свойство ТаrgetSite ..267 Свойство StackTrace ..268 Свойство HelpLink ..269 Свойство Data ..270 Исключения системного уровня (System.SystemException) ..271 Исключения уровня приложения (System.ApplicationException) ..272 Создание специальных исключений, способ первый ..273 Создание специальных исключений, способ второй ..275 Создание специальных исключений, способ третий ..276 Обработка множества исключений ..277 Обобщенные операторы catch ..279 Передача исключений ..279 Внутренние исключения ..280 Блок finally ..281 Какие исключения могут выдавать методы ..282 К чему приводят необработанные исключения ..283 Отладка необработанных исключений в Visual Studio ..283 Резюме ..284
Глава 8. Время жизни объектов
Классы, объекты и ссылки ..285 Базовые сведения о времени жизни объектов ..286 CIL-код для new ..287 Установка для объектных ссылок значения null ..288 Роль, которую исполняют корневые элементы приложения ..289 Поколения объектов ..291 Тип System.GC ..292 Принудительная активизация процесса сборки мусора ..293 Создание финализируемых объектов ..296 Переопределение System.Object.Finalize() ..297 Детали процесса финализации ..299 Создание самоочищаемых объектов ..299 Повторное использование ключевого слова using в С# ..302 Создание финализируемых и самоочищаемых типов ..303 Формализованный шаблон очистки ..304 Резюме ..306
ЧАСТЬ III. Дополнительные конструкции программирования на С#
Глава 9. Работа с интерфейсами
Что собой представляют типы интерфейсов ..308 Сравнение типов интерфейсов с абстрактными базовыми классами ..310 Определение специальных интерфейсов ..312 Реализация интерфейса ..314 Вызов членов интерфейса на уровне объектов ..316 Получение ссылок на интерфейсы с помощью ключевого слова as ..317 Получение ссылок на интерфейсы с помощью ключевого слова is ..317 Использование интерфейсов в качестве параметров ..318 Использование интерфейсов в качестве возвращаемых значений ..319 Массивы типов интерфейсов ..320 Реализация интерфейсов в Visual Studio 2008 ..321 Устранение конфликтов на уровне имен за счет явной реализации интерфейсов ..322 Проектирование иерархий интерфейсов ..325 Множественное наследование в случае типов интерфейсов ..326 Создание перечислимых типов (IEnumerable и IEnumerator) ..328 Создание методов итераторов с использованием ключевого слова yield ..331 Создание именованного итератора ..332 Внутреннее представление метода итератора ..333 Создание клонируемых объектов (ICloneable) ..334 Более сложный пример клонирования ..336 Создание сравнимых объектов (IComparable) ..339 Указание нескольких критериев для сортировки (IComparеr) ..341 Использование специальных свойств и специальных типов для сортировки ..343 Интерфейсы обратного вызова ..343 Резюме ..347
Глава 10. Коллекции и обобщения
Интерфейсы пространства имен System.Collections ..348 Роль ICollection ..349 Роль IDictionary ..350 Роль IDictionaryEnumerator ..350 Роль IList ..351 Типы классов System.Collections ..351 Работа с типом ArrayList ..352 Работа с типом Queue ..353 Работа с типом Stack ..354 Пространство имен System.Collections.Specialized ..355 Связь между упаковкой, распаковкой и System.Object ..356 Проблема с операциями упаковки/распаковки ..358 Проблема безопасности типов и строго типизированные коллекции ..359 Построение специальной коллекции ..359 Проблемы упаковки и строго типизированные коллекции ..361 Пространство имен System.Collections.Generic ..363 Исследование типа List ..364 Создание специальных обобщенных методов ..366 Выведение параметра-типа ..367 Создание обобщенных структур и классов ..369 Ключевое слово default в обобщенном коде ..369 Создание специальной обобщенной коллекции ..371 Ограничения специальных обобщенных коллекций ..372 Ограничение параметров-типов с помощью ключевого слова where ..373 Недостаток ограничений операций ..375 Создание обобщенных базовых классов ..375 Создание обобщенных интерфейсов ..376 Резюме ..378
Глава 11. Делегаты, события и лямбда-выражения
Понятие типа делегата .NET ..379 Определение делегата на С# ..380 Базовые классы System.MulticastDelegate и System.Delegate ..382 Простейший из возможных пример делегата ..384 Исследование объекта делегата ..385 Усовершенствование типа Car с помощью делегатов ..386 Включение группового вызова ..389 Удаление цели из списка вызовов делегата ..390 Более сложный пример делегата ..391 Делегаты как параметры ..392 Анализ кода делегата ..394 Понятие ковариантности делегатов ..395 Создание обобщенных делегатов ..397 Эмуляция обобщенных делегатов без обобщений ..398 Понятие событий С# ..399 Ключевое слово event ..400 "За кулисами" событий ..401 Прослушивание входящих событий ..402 Упрощенная регистрация событий с использованием Visual Studio 2008 ..403 Аккуратное и правильное событие ..404 Обобщенный делегат EventHandler ..406 Понятие анонимных методов С# ..406 Доступ к "внешним" переменным ..408 Понятие групповых преобразований методов ..408 Лямбда-операция С# 2008 ..410 Анализ лямбда-выражения ..412 Обработка аргументов внутри множественных операторов ..413 Усовершенствование примера CarDelegate с использованием лямбда-выражений ..414 Лямбда-выражения с несколькими (или нулем) параметров ..415 Резюме ..417
Глава 12. Индексаторы, операции и указатели
Понятие методов-индексаторов ..418 Индексация объектов с использованием строковых значений ..420 Перегруженные методы-индексаторы ..421 Внутреннее представление методов-индексаторов ..422 Многомерные индексаторы ..422 Определения индексаторов в интерфейсных типах ..423 Понятие перегрузки операций ..423 Перегрузка бинарных операций ..424 А как насчет операций += и -=? ..426 Перегрузка унарных операций ..427 Перегрузка операций эквивалентности ..428 Перегрузка операций сравнения ..428 Внутреннее представление перегруженных операций ..429 Финальные соображения относительно перегрузки операций ..431 Понятие преобразований пользовательских типов ..432 Числовые преобразования ..432 Преобразования между связанными типами классов ..432 Создание специальных процедур преобразования ..433 Дополнительные явные преобразования типа Square ..435 Определение процедур неявного преобразования ..436 Внутреннее представление процедур пользовательских преобразований ..437 Работа с типами указателей ..438 Ключевое слово unsafe ..440 Работа с операциями * и & ..441 Небезопасная и безопасная функции Swap ..441 Доступ к полям через указатели (операция ->) ..442 Ключевое слово stackalloc ..443 Закрепление типа ключевым словом fixed ..443 Ключевое слово sizeof ..444 Директивы препроцессора С# ..445 Указание областей кода ..445 Условная компиляция кода ..446 Резюме ..448
Глава 13. Средства языка С# 2008
Понятие неявно типизированных локальных переменных ..449 Использование var внутри конструкций for each ..450 Ограничения неявно типизированных переменных ..451 Неявно типизированные локальные массивы ..452 Неявно типизированные данные — это строго типизированные данные ..453 Удобство неявно типизированных локальных переменных ..453 Понятие автоматических свойств ..454 Взаимодействие с автоматическими свойствами ..455 Ограничение доступа к автоматическим свойствам ..456 Автоматические свойства и значения по умолчанию ..456 Понятие расширяющих методов ..457 Определение расширяющих методов ..458 Вызов расширяющих методов на уровне экземпляра ..459 Статический вызов расширяющих методов ..460 Область действия расширяющего метода ..460 Импорт типов, определяющих расширяющие методы ..461 Расширяющие методы в IntelliSense ..462 Построение и использование расширяющих библиотек ..463 Расширение интерфейсных типов посредством расширяющих методов ..464 Понятие частичных методов ..466 Первый взгляд на частичные методы ..466 Применение частичных методов ..468 Синтаксис инициализаторов объектов ..468 Вызов специальных конструкторов с синтаксисом инициализации ..470 Инициализация вложенных типов ..471 Понятие инициализации коллекций ..472 Понятие анонимных типов ..472 Внутреннее представление анонимных типов ..473 Реализация ToString() и GetHashCode() ..475 Семантика эквивалентности анонимных типов ..475 Анонимные типы, содержащие в себе анонимные типы ..477 Резюме ..477
Глава 14. Введение в LINQ
Роль LINQ ..478 Выражения LINQ — строго типизированы и расширяемы ..479 Основные сборки LINQ ..480 Первый взгляд на выражения запросов LINQ ..481 LINQ и неявно типизированные локальные переменные ..483 LINQ и расширяющие методы ..484 Роль отложенного выполнения ..485 Роль немедленного выполнения ..486 LINQ и обобщенные коллекции ..487 Применение выражения LINQ ..487 LINQ и необобщенные коллекции ..488 Фильтрация данных с использованием OfТуlе<Т>() ..489 Внутреннее представление операций запросов LINQ ..489 Построение выражений запросов из операций запросов ..490 Построение выражений запросов с использованием типа Enumerable и лямбда-выражений ..491 Построение выражений запросов с использованием перечислимого типа и анонимных методов ..492 Построение выражений запросов с использованием перечислимого типа и "сырых" делегатов ..492 Исследование операций запросов С# LINQ ..493 Получение счетчиков с использованием Enumerable ..494 Построение нового тестового проекта ..495 Запросы LINQ: вещь в себе? ..500 Трансформация результатов запроса в типы массивов ..501 Резюме ..502
ЧАСТЬ IV. Программирование с использованием сборок .NET
Глава 15. Сборки .NET
Определение специальных пространств имен ..504 Полностью квалифицированное имя типа ..506 Определение псевдонимов с помощью ключевого слова using ..507 Создание вложенных пространств имен ..508 Пространство имен, используемое в Visual Studio 2008 по умолчанию ..509 Роль сборок .NET ..510 Сборки повышают возможность повторного использования кода ..510 Сборки определяют границы типов ..511 Сборки являются единицами, поддерживающими версии ..511 Сборки являются самоописываемыми ..511 Сборки поддаются конфигурированию ..511 Формат сборки .NET ..512 Заголовок файла Win32 ..512 Заголовок файла CLR ..513 CIL-код, метаданные типов и манифест сборки ..513 Необязательные ресурсы сборки ..514 Однофайловые и многофайловые сборки ..514 Создание и использование однофайловой сборки ..515 Изучение манифеста ..519 Исследование CIL-кода ..520 Исследование метаданных типов ..521 Создание клиентского приложения на С# ..521 Создание клиентского приложения на Visual Basic ..523 Межъязыковое наследование в действии ..524 Создание и использование многофайловой сборки ..524 Исследование файла ufо.netmodule ..526 Исследование файла airvehicles.dll ..526 Использование многофайловой сборки ..526 Приватные сборки ..527 Идентичность приватной сборки ..528 Процесс зондирования ..528 Конфигурирование приватных сборок ..529 Конфигурационные файлы и Visual Studio 2008 ..531 Утилита .NET Framework Configuration ..531 Разделяемые сборки ..533 Строгие имена ..534 Назначение строгого имени сборке CarLibrary.dll ..535 Назначение строгих имен в Visual Studio 2008 ..537 Установка и удаление разделяемых сборок из GAC ..537 Использование разделяемой сборки ..538 Изучение манифеста SharedCarLibClient ..539 Конфигурирование разделяемых сборок ..540 Фиксация текущей версии разделяемой сборки ..541 Создание разделяемой сборки версии 2.0.0.0 ..541 Динамическое перенаправление к конкретным версиям разделяемой сборки ..543 Использование утилиты .NET Framework Configuration ..544 Изучение внутреннего устройства GAC ..545 Сборки политик издателя ..546 Отключение политик издателя ..547 Элемент ..548 Пространство имен System.Configuration ..549 Конфигурационный файл машины ..550 Резюме ..551
Глава 16. Рефлексия типов, позднее связывание и программирование с использованием атрибутов
Необходимость в метаданных типов ..552 Просмотр части метаданных перечисления EngineState ..553 Просмотр части метаданных типа Car ..554 Изучение блока TypeRef ..555 Просмотр метаданных самой сборки ..555 Просмотр метаданных внешних сборок, на которые ссылается текущая сборка ..556 Просмотр метаданных строковых литералов ..556 Рефлексия ..557 Класс System.Туpe ..557 Получение информации о типе с помощью System.Object.GetType() ..558 Получение информации о типе с помощью System.Type.GetType() ..559 Получение информации о типе с помощью typeof() ..559 Создание специальной программы для просмотра метаданных ..560 Рефлексия методов ..560 Рефлексия полей и свойств ..560 Рефлексия реализуемых интерфейсов ..561 Отображение различных дополнительных деталей ..561 Реализация Main() ..562 Рефлексия обобщенных типов ..563 Рефлексия параметров и возвращаемых значений методов ..563 Динамически загружаемые сборки ..565 Рефлексия разделяемых сборок ..567 Позднее связывание ..568 Класс System.Activator ..569 Вызов методов без параметров ..570 Вызов методов с параметрами ..570 Программирование с использованием атрибутов ..571 Потребители атрибутов ..572 Применение предопределенных атрибутов в С# ..572 Указание параметров конструктора для атрибутов ..574 Атрибут [Obsolete] в действии ..575 Сокращенное обозначение атрибутов в С# ..575 Создание специальных атрибутов ..576 Применение специальных атрибутов ..576 Синтаксис именованных свойств ..577 Ограничение использования атрибутов ..577 Атрибуты уровня сборки (и уровня модуля) ..578 Файл AssemblyInfo.cs в Visual Studio 2008 ..579 Рефлексия атрибутов с использованием раннего связывания ..580 Рефлексия атрибутов с использование позднего связывания ..581 Возможное применение рефлексии, позднего связывания и специальных атрибутов на практике ..582 Создание расширяемого приложения ..583 Создание CommonSnappableTypes.dll ..583 Создание оснастки на С# ..584 Создание подключаемого компонента в Visual Basic .NET ..585 Создание расширяемого приложения Windows Forms ..585 Резюме ..588
Глава 17. Процессы, домены приложений и контексты объектов
Повторный обзор традиционных процессов Win32 ..589 Общая информация о потоках ..590 Взаимодействие с процессами в рамках платформы .NET ..592 Перечисление выполняющихся процессов ..594 Изучение конкретного процесса ..595 Изучение ряда потоков внутри процесса ..595 Изучение модулей внутри процесса ..597 Запуск и остановка процессов программным образом ..598 Домены приложений .NET ..599 Перечисление доменов приложений процесса ..601 Создание новых доменов приложений программным образом ..602 Выгрузка доменов приложений программным образом ..604 Границы контекстов объектов ..605 Контекстно-свободные и контекстно-зависимые типы ..605 Определение контекстно-зависимых объектов ..607 Инспектирование контекста объекта ..607 Подведение итогов по процессам, доменам приложений и контекстам ..609 Резюме ..609
Глава 18. Создание многопоточных приложений
Отношение между процессами, доменами приложений, контекстами и потоками ..610 Проблемы параллелизма ..612 Роль синхронизации потоков ..612 Краткое описание делегатов .NET ..613 Асинхронная природа делегатов ..615 Методы BeginInvoke() и EndInvoke() ..615 Интерфейс System.IAsyncResult ..616 Вызов метода асинхронным образом ..616 Синхронизация вызывающего потока ..617 Роль делегата AsyncCallback ..618 Роль класса AsyncResult ..620 Передача и получение специальных данных о состоянии ..620 Пространство имен System.Threading ..621 Класс System.Threading.Thread ..622 Получение статистических данных о текущем потоке ..623 Свойство Name ..624 Свойство Priority ..625 Создание вторичных потоков программным образом ..625 Работа с делегатом ThreadStart ..626 Работа с делегатом ParameterizedThreadStart ..628 Приоритетные и фоновые потоки ..629 Проблемы, связанные с одновременным доступом ..630 Синхронизация с помощью ключевого слова lock в С# ..632 Синхронизация с помощью типа System.Threading.Monitor ..634 Синхронизация с помощью типа System.Threading.Interlocked ..635 Синхронизация с помощью атрибута [Synchronization] ..636 Программирование с использованием обратных вызовов таймеров ..637 Пул потоков CLR ..639 Роль компонента BackgroundWorker ..641 Работа с типом BackgroundWorker ..641 Обработка данных с помощью типа BackgroundWorker ..643 Резюме ..644
Глава 19. Язык CIL и роль динамических сборок
Природа программирования в терминах CIL ..645 Директивы, атрибуты и коды операций в CIL ..646 Роль директив CIL ..647 Роль атрибутов CIL ..647 Роль кодов операций CIL ..647 Разница между кодами операций и их мнемоническими эквивалентами в CIL ..647 Помещение и извлечение данных из стека в CIL ..648 Двунаправленное проектирование ..650 Роль меток в коде CIL ..653 Взаимодействие с CIL: модификация файла *.il ..653 Компиляция CIL-кода с помощью ilasm.exe ..654 Компиляция CIL-кода с помощью SharpDevelop ..656 Роль peverify.exe ..656 Директивы и атрибуты CIL ..657 Добавление ссылок на внешние сборки в CIL ..657 Определение текущей сборки в CIL ..658 Определение пространств имен в CIL ..659 Определение типов классов в CIL ..659 Определение и реализация интерфейсов ..660 Определение структур в CIL ..661 Определение перечислений ..661 Определение обобщений в CIL ..662 Компиляция файла CILTypes.il ..662 Соответствия между типами данных в библиотеке базовых классов .NET, С# и CIL ..663 Определение членов типов в CIL ..664 Определение полей данных ..664 Определение конструкторов для типов в CIL ..665 Определение свойств ..665 Определение параметров членов ..666 Изучение кодов операций в CIL ..667 Директива .maxstack ..669 Объявление локальных переменных в CIL ..670 Отображение параметров на локальные переменные в CIL ..671 Скрытая ссылка this ..671 Представление итерационных конструкций в CIL ..672 Создание сборки .NET на CIL ..672 Создание CILCars.dll ..673 Создание CILCarClient.exe ..675 Динамические сборки ..677 Пространство имен System.Reflection.Emit ..678 Роль System.Reflection.Emit.ILGenerator ..678 Создание динамической сборки ..679 Генерация сборки и набора модулей ..681 Роль типа ModuleBuilder ..682 Генерация типа HelloClass и принадлежащей ему строковой переменной ..683 Генерация конструкторов ..684 Генерация метода SayHello() ..685 Использование динамически сгенерированной сборки ..685 Резюме ..686
(окончание на следующей странице) Страницы » 1 2 Скачать книгу: Эндрю Троелсен - Язык программирования С# 2008 и платформа .NET 3.5
|
|