Албахари Б., Албахари Д., C# 3.0. Справочник
BHV, 2009 г., 944 стр., 978-5-9775-0245-0
Описание книги
Ключевые слова
Поделиться ссылкой на книгу
Содержание книги
Предисловие
Целевая аудитория
Как организована эта книга
Что необходимо для чтения этой книги
Соглашения, использованные в книге
Использование фрагментов кода
Благодарности
Глава 1. Введение в C# и .NET Framework
Объектная ориентированность
Безопасность типов
Управление памятью
Работа на разных платформах
Язык C# и среда CLR
Среда CLR и платформа .NET Framework
Что нового в C# 3.0
Глава 2. Основы языка C#
Первая программа на C#
Компиляция
Синтаксис
Идентификаторы и ключевые слова
Как избежать конфликтов
Контекстные ключевые слова
Литералы, пунктуаторы и знаки операций
Комментарии
Основные сведения о типах
Примеры стандартных типов
Примеры пользовательских типов
Члены типа
Сходство стандартных и пользовательских типов
Конструкторы и создание экземпляров
Члены экземпляра и статические члены
Ключевое слово public
Преобразование типов
Типы значений и ссылочные типы
Типы значений
Ссылочные типы
Значение null
Расход памяти
Таксономия стандартных типов
Числовые типы
Числовые литералы
Распознавание типов числовых литералов
Числовые суффиксы
Числовые преобразования
Преобразование целого в целое
Преобразование числа с плавающей точкой в число
с плавающей точкой
Преобразование целого в число с плавающей
точкой и обратно
Десятичные преобразования
Арифметические операции
Операции инкремента и декремента
Специальные операции над целыми числами
Целочисленное деление
Целочисленное переполнение
Проверка на переполнение при целочисленных
арифметических операциях
Проверка на переполнение выражений с
константами
Побитовые операции
Восьми- и шестнадцатибитовые целые
Специальные значения типов float и double
Типы double и decimal
Ошибки округления вещественных чисел
Тип bool и булевы операторы
Преобразование типа bool
Равенство и операции сравнения
Условные операции
Строки и символы
Преобразование типа char
Тип string
Конкатенация строк
Сравнение строк
Массивы
Инициализация элементов по умолчанию
Типы значений и ссылочные типы
Многомерные массивы
Прямоугольные массивы
Ступенчатые массивы
Упрощенные выражения для инициализации
массива
Проверка границ массива
Переменные и параметры
Стек и куча
Стек
Куча
Определенное присваивание
Значения по умолчанию
Параметры
Передача аргументов по значению
Модификатор ref
Модификатор out
Особенности передачи аргументов по ссылке
Модификатор params
Ключевое слово var : неявная типизация
локальных переменных (C# 3.0)
Выражения и операции
Первичные выражения
Выражения, не имеющие значения
Выражения присваивания
Приоритет и ассоциативность операций
Приоритет
Операции с левой ассоциативностью
Операции с правой ассоциативностью
Таблица операций
Операторы
Операторы объявления
Локальные переменные
Операторы выражений
Операторы выбора
Оператор if
Конструкция else
Изменение хода выполнения программы с помощью
операторных скобок
Оператор switch
Операторы цикла
Циклы while и do-while
Цикл for
Цикл foreach
Операторы перехода
Оператор break
Оператор continue
Оператор goto
Оператор return
Оператор throw
Прочие операторы
Пространства имен
Ключевое слово namespace
Полностью квалифицированные имена
Директива using
Глобальное пространство имен
Правила для пространств имен
Область видимости имен
Сокрытие имен
Повторяющиеся пространства имен
Вложенные директивы using
Псевдонимы типов и пространств имен
Дополнительные возможности пространств имен
Внешние пространства имен
Квалификаторы псевдонимов для пространств имен
Глава 3. Создание типов в C#
Классы
Поля
Модификатор readonly
Инициализация поля
Совместное объявление нескольких полей
Методы
Перегрузка методов
Передача параметров по значению и ссылке
Конструкторы экземпляров
Перегрузка конструкторов
Неявные конструкторы без параметров
Порядок выполнения конструктора и
инициализации полей
Закрытые конструкторы
Инициализаторы объектов (C# 3.0)
Ссылка this
Свойства
Свойства, доступные только для чтения, и
вычисляемые свойства
Автоматические свойства (C# 3.0)
Обращение к свойству методами get и set
Реализация свойств в CLR
Индексаторы
Реализация индексатора
Реализация индексатора в CLR
Константы
Статические конструкторы
Порядок инициализации статических полей
Недетерминизм статических конструкторов
Статические классы
Финализаторы
Частичные классы и методы
Частичные методы (C# 3.0)
Наследование
Полиморфизм
Приведение типов
Приведение "вверх"
Приведение "вниз"
Операция as
Операция is
Виртуальные функции
Абстрактные классы и абстрактные члены
Сокрытие унаследованных членов
Модификаторы new и virtual
Запечатывание функций и классов
Ключевое слово base
Конструкторы и наследование
Неявный вызов конструктора базового класса без
параметров
Порядок инициализации конструкторов и полей
Перегрузка и разрешение конфликтов
Тип object
Упаковка и распаковка
Семантика копирования при упаковке и распаковке
Статическая и динамическая проверка типа
Метод GetType и операция typeof
Метод ToString
Список членов объекта
Структуры
Конструирование структуры
Модификаторы доступа
Примеры
Понижение уровня доступности
Ограничения, накладываемые на модификаторы
доступа
Интерфейсы
Расширение интерфейса
Явная реализация интерфейса
Виртуальная реализация членов интерфейса
Новая реализация интерфейса в подклассе
Альтернативы реализации интерфейса
Интерфейсы и упаковка
Выбор между классом и интерфейсом
Перечисления
Преобразования перечислений
Перечисление флагов
Операции над перечислениями
Безопасность типов
Вложенные типы
Обобщенные типы
Объявление обобщенных типов
Для чего существуют обобщенные типы
Обобщенные методы
Объявление обобщенных параметров
Операция typeof для обобщенных типов
Значение по умолчанию для обобщенного типа
Ограничения для обобщенных типов
Обобщенные типы и ковариантность
Сравнение обобщенных типов и массивов
Создание подклассов обобщенных классов
Обобщенные объявления, ссылающиеся на себя
Статические данные
Обобщенные типы C# и шаблоны С++
Глава 4. Более сложные элементы C#
Делегаты
Написание подключаемых методов
Групповые делегаты
Пример группового делегата
Экземплярные методы-цели
Обобщенные типы делегатов
Делегаты и интерфейсы
Совместимость делегатов
Совместимость по типам
Совместимость по параметрам
Совместимость по типу возвращаемого значения
События
Стандартная модель событий
Методы обращения к событиям
Модификаторы событий
Лямбда-выражения (C# 3.0)
Явное указание типов параметров
лямбда-выражения
Обобщенные лямбда-выражения и делегаты Func
Внешние переменные
Анонимные методы
Операторы try и исключения
Конструкция catch
Блок finally
Оператор using
Возбуждение исключений
Повторное возбуждение исключения
Важнейшие свойства класса System.Exception
Распространенные типы исключений
Распространенные способы программирования
Применение метода try
Атомарность операций
Альтернативы исключениям
Перечисление и итераторы
Перечисление
Итераторы
Семантика итераторов
Формирование последовательностей
Конструирование перечисляемого объекта
Типы, допускающие значение null
Значение null
Структура Nullable<T>
Явное и неявное преобразование типов,
допускающих значение null
Упаковка и распаковка типов, допускающих
значение null
Поднятие операций
Операции равенства
Операции отношения
Все остальные операции
Смешивание разных типов
Тип bool?
Операция проверки на null
Применение типов, допускающих значение null
Альтернативы для типов, допускающих значение
null
Перегрузка операций
Обзор
Операторные функции
Перегрузка операций равенства и сравнения
Нестандартные явные и неявные преобразования
типов
Перегрузка true и false
Методы расширения (C# 3.0)
Цепочки методов расширения
Устранение неоднозначности
Пространства имен
Методы расширения и методы экземпляров
Разные методы расширения
Методы расширения и интерфейсы
Анонимные типы (C# 3.0)
Атрибуты
Классы атрибутов
Именованные и позиционные параметры
Цели атрибутов
Указание нескольких атрибутов
Небезопасный код и указатели
Основы работы с указателями
Небезопасный код
Оператор fixed
Операция "указатель на элемент"
Массивы
Ключевое слово stackalloc
Буферы фиксированного размера
Конструкция void*
Указатели на неуправляемый код
Препроцессорные директивы
Условные атрибуты
Прагматичный подход к предупреждениям
XML-документирование
Стандартные XML-теги
Теги, определяемые пользователем
Перекрестные ссылки
Глава 5. Обзор возможностей платформы
Framework
Что нового в .NET Framework 3.5
Среда CLR и "ядро" платформы Framework
Системные типы
Обработка текста
Коллекции
Запросы
XML
Потоки и ввод/вывод
Работа в сети
Сериализация
Сборки, отражение и атрибуты
Безопасность
Нити выполнения и асинхронные методы
Домены приложения
Низкоуровневое взаимодействие
Диагностика
Прикладные технологии
Технологии для создания пользовательского
интерфейса
ASP.NET
WPF
Windows Forms
Технологии работы с базами данных
ADO.NET
Windows Workflow
COM+ и MSMQ
Технологии построения распределенных систем
WCF
Удаленное взаимодействие и веб-службы
CardSpace
Глава 6. Основы Framework
Работа со строками и текстом
Тип char
Строки
Конструирование строк
Пустые строки и строки со значением null
Обращение к символам в строке
Поиск в строке
Манипулирование строками
Разбиение и объединение строк
Метод String.Format и строки составного формата
Сравнение строк
Выяснение порядка и культурные особенности
Сравнение для выяснения равенства
Сравнение для выяснения порядка
Класс StringBuilder
Текстовые кодировки и Unicode
Получение объекта Encoding
Кодировка для файлового и потокового
ввода/вывода
Кодировка для байтовых массивов
Кодировка UTF-16 и строки
Дата и время
Структура TimeSpan
Структуры DateTime и DateTimeOffset
Выбор между DateTime и DateTimeOffset
Создание структуры DateTime
Создание структуры DateTimeOffset
Текущие значения структур DateTime и
DateTimeOffset
Работа с датой и временем
Форматирование и разбор даты и времени
Значение null у DateTime и DateTimeOffset
Даты и часовые пояса
Часовые пояса и структура DateTime
Часовые пояса и структура DateTimeOffset
Классы TimeZone и TimeZoneInfo
Класс TimeZone
Класс TimeZoneInfo
Структура DateTime и переход на летнее/зимнее
время
Форматирование и разбор строк
Методы ToString и Parse
Поставщики форматов
Поставщики форматов и класс CultureInfo
Поставщики NumberFormatInfo и DateTimeFormatInfo
Составное форматирование
Разбор строк с помощью поставщиков форматов
Интерфейсы IFormatProvider и ICustomFormatter
Стандартные строки формата и флаги разбора
Строки формата для чисел
Флаги NumberStyles
Строки формата для DateTime
Разбор строк DateTime и возможные ошибки
Флаги DateTimeStyles
Строки формата для перечисления
Другие механизмы преобразования
Класс Convert
Округление при преобразовании вещественных
чисел в целые
Системы счисления по основанию 2, 8 и 16
Динамические преобразования
Преобразования base64
Класс XmlConvert
Преобразователи типов
Класс BitConverter
Работа с числами
Преобразования
Класс Math
Класс Random
Перечисления
Преобразования перечислений
Преобразование типа enum в целочисленный тип
Преобразование целочисленного типа в enum
Преобразование строк
Перебор элементов перечисления
Как работают перечисления
Структура Guid
Сравнение для выяснения равенства
Равенство по значению и ссылочное равенство
Стандартные протоколы равенства
Операции == и !=
Виртуальный метод Object.Equals
Статический метод object.Equals
Статический метод object.ReferenceEquals
Интерфейс IEquatable<T>
Когда Equals не равняется операции ==
Равенство типов, определяемых пользователем
Как переопределить семантику равенства
Переопределение метода GetHashCode
Переопределение метода Equals
Перегрузка операций == и !=
Реализация интерфейса IEquatable<T>
Пример: структура Area
Подключаемые интерфейсы сравнения
Сравнение для выяснения порядка
Интерфейсы IComparable
Интерфейс IComparable и метод Equals
Операции < и >
Реализация интерфейсов IComparable
Вспомогательные классы
Класс Console
Класс Environment
Класс Process
Глава 7. Коллекции
Перечисление
Интерфейсы IEnumerable и IEnumerator
Интерфейсы IEnumerable<T> и IEnumerator<T>
Реализация интерфейсов перечисления
Интерфейс IDictionaryEnumerator
Интерфейсы ICollection и IList
Интерфейсы ICollection и ICollection<T>
Интерфейсы IList и IList<T>
Класс Array
Конструирование массива и индексация его
элементов
Перебор элементов массива
Длина и размерность массива
Поиск в массиве
Сортировка массива
Изменение порядка элементов на противоположный
Копирование, преобразование типа и изменение
размера массива
Списки, очереди, стеки и множества
Классы List<T> и ArrayList
Класс LinkedList<T>
Классы Queue и Queue<T>
Классы Stack и Stack<T>
Класс BitArray
Класс HashSet<T>
Словари
Интерфейсы IDictionary и IDictionary<TKey,TValue>
Классы Dictionary<TKey,TValue> и Hashtable
Класс OrderedDictionary
Классы ListDictionary и HybridDictionary
Отсортированные словари
Коллекции, настраиваемые пользователем, и
прокси-классы
Классы Collection<T> и CollectionBase
Классы KeyedCollection<TKey,TItem> и
DictionaryBase
Класс ReadOnlyCollection<T>
Подключение протоколов выяснения равенства и
порядка
Интерфейсы IEqualityComparer и класс
EqualityComparer
Интерфейсы IComparer и класс Comparer
Класс StringComparer
Глава 8. Запросы LINQ
Основы
Лямбда-запросы
Цепочки операторов запросов
Почему важны методы расширения
Составление лямбда-выражений
Лямбда-выражения и сигнатуры делегатов Func
Лямбда-выражения и типы элементов
Естественный порядок элементов
Прочие операторы
Синтаксис, облегчающий восприятие запроса
Переменные итерации
Синтаксис, облегчающий восприятие запроса, и
SQL-синтаксис
Синтаксис, облегчающий восприятие запроса, и
лямбда-синтаксис
Запросы со смешанным синтаксисом
Отложенное выполнение
Повторное выполнение
Внешние переменные
Механика отложенного выполнения
Цепочки декораторов
Как выполняются запросы
Подзапросы
Подзапросы и отложенное выполнение
Стратегии построения сложных запросов
Последовательное построение запросов
Ключевое слово into
Правила определения областей видимости
Создание оболочек для запросов
Стратегии проецирования
Инициализаторы объектов
Анонимные типы
Ключевое слово let
Интерпретируемые запросы
Как работают интерпретируемые запросы
Выполнение
Комбинирование интерпретируемых и локальных
запросов
Оператор AsEnumerable
Запросы LINQ to SQL
Классы сущностей в технологии LINQ to SQL
Объект DataContext
Автоматическое генерирование сущностей
Ассоциирование
Отложенное выполнение запросов LINQ to SQL
Класс DataLoadOptions
Предварительное указание фильтра
"Нетерпеливая" загрузка
Обновления
Построение выражений для запросов
Делегаты и деревья выражений
Компиляция деревьев выражений
Оператор AsQueryable
Деревья выражений
Объектная модель документов для выражений
Глава 9. Операторы LINQ
Обзор операторов
Коллекция ? коллекция
Фильтрация
Проецирование
Объединение
Упорядочивание
Группирование
Операции над множествами
Методы преобразования: импорт
Методы преобразования: экспорт
Коллекция ? не коллекция
Поэлементные операции
Методы агрегирования
Квантификаторы
Не коллекция ? коллекция
Методы генерирования коллекций
Фильтрация
Оператор Where
Синтаксис, облегчающий восприятие запроса
Реализация метода Enumerable.Where
Описание
Индексированная фильтрация
Оператор Where в запросе LINQ to SQL
Операторы Take и Skip
Операторы TakeWhile и SkipWhile
Оператор Distinct
Проецирование
Оператор Select
Синтаксис, облегчающий восприятие запроса
Реализация в классе Enumerable
Описание
Индексированная проекция
Подзапросы Select и иерархия объектов
Подзапросы и объединения в запросах LINQ to SQL
Проецирование в конкретные типы
Оператор SelectMany
Синтаксис, облегчающий восприятие запроса
Реализация в классе Enumerable
Описание
Внешние переменные итерации
Мышление в соответствии с синтаксисом,
облегчающим восприятие запроса
Объединение с помощью оператора SelectMany
Оператор SelectMany в запросах LINQ to SQL
Внешние объединения с помощью оператора
SelectMany
Объединение
Операторы Join и GroupJoin
Аргументы оператора Join
Аргументы оператора GroupJoin
Синтаксис, облегчающий восприятие запроса
Описание
Оператор Join
Объединение по нескольким ключам
Объединение в лямбда-синтаксисе
Оператор GroupJoin
Плоские внешние объединения
Объединение и таблицы просмотра
Реализации в классе Enumerable
Упорядочивание
Операторы OrderBy, OrderByDescending, ThenBy и
ThenByDescending
Аргументы операторов OrderBy и
OrderByDescending
Аргументы операторов ThenBy и ThenByDescending
Синтаксис, облегчающий восприятие запроса
Описание
Классы, выполняющие сравнение, и сортировка
Интерфейсы IOrderedEnumerable и
IOrderedQueryable
Группирование
Оператор GroupBy
Синтаксис, облегчающий восприятие запроса
Описание
Оператор GroupBy в запросах LINQ to SQL
Группирование по нескольким ключам
Пользовательские классы для выяснения
равенства
Операции над множествами
Операторы Concat и Union
Операторы Intersect и Except
Методы преобразования
Операторы OfType и Cast
Операторы ToArray, ToList, ToDictionary и ToLookup
Операторы AsEnumerable и AsQueryable
Поэлементные операции
Операторы First, Last и Single
Оператор ElementAt
Оператор DefaultIfEmpty
Методы агрегирования
Операторы Count и LongCount
Операторы Min и Max
Операторы Sum и Average
Оператор Aggregate
Квантификаторы
Операторы Contains и Any
Операторы All и SequenceEqual
Методы генерирования коллекций
Метод Empty
Методы Range и Repeat
Глава 10. Запросы LINQ to XML
Обзор архитектуры
Что такое DOM?
DOM в технологии запросов LINQ to XML
Обзор модели X-DOM
Загрузка и синтаксический анализ
Сохранение и сериализация
Создание экземпляра дерева X-DOM
Функциональное конструирование
Указание содержимого
Автоматическое глубокое клонирование
Навигация и отправка запросов
Навигация по узлам-потомкам
Методы FirstNode, LastNode и Nodes
Чтение элементов
Чтение одного элемента
Рекурсивные функции
Навигация по родительским элементам
Навигация по элементам одного уровня
Навигация по атрибутам
Редактирование дерева X-DOM
Обновление простых значений
Редактирование узлов-потомков и атрибутов
Обновление узла через его родителя
Удаление последовательности узлов и атрибутов
Работа со значениями
Установка значений
Чтение значений
Значения и узлы со смешанным содержимым
Автоматическая конкатенация элементов XText
Документы и объявления
Класс XDocument
XML-объявления
Запись объявления в строку
Имена и пространства имен
Пространства имен в XML
Префиксы
Атрибуты
Указание пространства имен в модели X-DOM
X-DOM и пространства имен по умолчанию
Префиксы
Аннотации
Проецирование в модель X-DOM
Исключение пустых элементов
Проецирование в поток
Преобразование дерева X-DOM
Более сложные преобразования
Глава 11. Другие XML-технологии
Класс XmlReader
Чтение узлов
Чтение элементов
Необязательные элементы
Произвольный порядок элементов
Пустые элементы
Другие методы семейства ReadXXX
Чтение атрибутов
Узлы-атрибуты
Пространства имен и префиксы
Класс XmlWriter
Запись атрибутов
Запись узлов других типов
Пространства имен и префиксы
Примеры использования классов XmlReader и
XmlWriter
Работа с иерархическими структурами
Комбинирование класса XmlReader или XmlWriter с
моделью X-DOM
Использование XmlReader с типом XElement
Использование XmlWriter с типом XElement
Класс XmlDocument
Загрузка и сохранение объекта XmlDocument
Обход дерева XmlDocument
Свойства InnerText и InnerXml
Создание узлов и манипуляции с ними
Пространства имен
Язык XPath
Самые распространенные операторы XPath
Класс XPathNavigator
Выдача запросов с учетом пространств имен
Класс XPathDocument
XSD и проверка корректности документа
Проверка соответствия схеме
Проверка с помощью класса XmlReader
Проверка дерева X-DOM или объекта XmlDocument
XSLT
Глава 12. Удаление объектов и сборка мусора
Интерфейс IDisposable и методы Dispose и Close
Стандартная семантика удаления объектов
Методы Close и Stop
Когда следует удалять объекты
Условное удаление
Сборка мусора и финализаторы
Вызов метода Dispose из финализатора
Как работает сборщик мусора
Приемы оптимизации
Принудительная сборка мусора
Альтернативы сборке мусора
Глава 13. Потоки и ввод/вывод
Архитектура потоков
Работа с потоками
Чтение и запись
Перемещение внутри потока
Закрытие и очистка буфера
Тайм-ауты
Безопасность работы нитей с потоками
Поток с резервным хранилищем
Класс FileStream
Конструирование объекта FileStream
Указание имени файла
Указание режима FileMode
Дополнительные характеристики класса FileStream
Класс MemoryStream
Класс PipeStream
Именованные каналы
Анонимные каналы
Класс BufferedStream
Потоковые адаптеры
Текстовые адаптеры
Классы StreamReader и StreamWriter
Кодировки символов
Классы StringReader и StringWriter
Двоичные адаптеры
Закрытие и удаление адаптеров потоков
Операции с файлами и каталогами
Класс File
Атрибуты архивирования и шифрования
Безопасность файла
Класс Directory
Классы FileInfo и DirectoryInfo
Класс Path
Специальные папки
Получение информации о томе
Слежение за событиями файловой системы
Сжатие файлов
Сжатие данных в памяти
Изолированная память
Виды изоляции
Чтение и запись в изолированную память
Местоположение изолированной памяти
Перебор элементов изолированной памяти
Глава 14. Работа в сети
Архитектура сети
Адреса и порты
URI
Архитектура "запрос/ответ"
Класс WebClient
Классы WebRequest и WebResponse
Прокси-серверы
Аутентификация
Класс CredentialCache
Параллелизм
Обработка исключений
Поддержка протокола HTTP
Заголовки
Строки запросов
Выгрузка данных формы
Cookie
Аутентификация с помощью форм
SSL
Создание HTTP-сервера
Работа с протоколом FTP
Работа с DNS
Отправка почты с помощью класса SmtpClient
Работа с протоколом ТСР
Параллелизм и TCP
Прием POP3-почты с помощью протокола ТСР
Глава 15. Сериализация
Концепции сериализации
Механизмы сериализации
Зачем нужны три механизма?
Сериализатор с контрактом данных
Двоичный сериализатор
Класс XmlSerializer
Интерфейс IXmlSerializable
Форматеры
Явная и неявная сериализация
Сериализатор с контрактом данных
Классы DataContractSerializer и
NetDataContractSerializer
Применение сериализаторов
Использование двоичного форматера
Сериализация подклассов
Ссылки на объекты
Сохранение ссылок на объекты
Устойчивость к изменению версии
Необходимые члены типа
Порядок следования членов
Пустое значение и значение null
Контракты данных и коллекции
Элементы коллекции с подклассами
Изменение имен коллекций и элементов
Расширение контрактов данных
Инструменты сериализации и десериализации
Взаимодействие с типом, помеченным как
[Serializable]
Взаимодействие с типом, реализующим интерфейс
IXmlSerializable
Двоичный сериализатор
С чего начать
Атрибуты двоичной сериализации
Атрибут [NonSerialized]
Атрибуты [OnDeserializing] и [OnDeserialized]
Атрибуты [OnSerializing] и [OnSerialized]
Атрибут [OptionalField] и сопровождение версий
Двоичная сериализация и интерфейс ISerializable
Создание подклассов сериализуемых классов
XML-сериализация
Сериализация на основе атрибутов
Атрибуты, имена и пространства имен
Порядок следования XML-элементов
Подклассы и объекты-потомки
Образование подкласса от корневого типа
Сериализация объектов-потомков
Подклассы объектов-потомков
Сериализация коллекций
Работа с элементами коллекций, имеющими
подклассы
Интерфейс IXmlSerializable
Глава 16. Сборки
Что такое сборка
Манифест сборки
Указание атрибутов сборки
Манифест приложения
Развертывание манифеста приложения
Модули
Класс Assembly
Подписание сборки
Как подписать сборку
Отсроченное подписание
Имена сборок
Полностью квалифицированные имена
Класс AssemblyName
Глобальный кэш сборок
Как устанавливать сборки в глобальном кэше
сборок
Глобальный кэш сборок и отслеживание версий
Ресурсы и вспомогательные сборки
Непосредственное встраивание ресурсов
Файлы .resources
Файлы .resx
Создание .resx-файла из командной строки
Чтение файлов .resources
Создание URI типа "pack" в Visual Studio
Вспомогательные сборки
Построение вспомогательных сборок
Тестирование вспомогательных сборок
Поддержка Visual Studio
Культуры и субкультуры
Поиск и загрузка сборок
Правила поиска сборок и типов
Событие AssemblyResolve
Загрузка сборок
Загрузка из файла
Развертывание сборок за пределами базового
каталога
Упаковка однофайлового приложения
Избирательное наложение "заплат"
Работа со сборками, на которые нет ссылок
Глава 17. Отражение и метаданные
Отражение и активизация типов
Получение экземпляра класса Type
Получение типов массивов
Получение вложенных типов
Имена типов
Имена вложенных типов
Имена обобщенных типов
Имена массивов и типов указателей
Имена типов параметров с модификаторами ref и
out
Базовые типы и интерфейсы
Создание экземпляров типов
Обобщенные типы
Отражение и вызов членов
Типы-члены
Члены C# и члены CLR
Члены обобщенных типов
Динамический вызов члена
Параметры методов
Повышение производительности с помощью
делегатов
Обращение к закрытым членам
Перечисление BindingFlags
Обобщенные методы
Анонимный вызов членов обобщенного типа
Отражение сборок
Загрузка сборки в контекст, допускающий только
отражение
Модули
Работа с атрибутами
Основы работы с атрибутами
Атрибут AttributeUsage
Определение собственного атрибута
Чтение атрибутов на этапе выполнения
Получение атрибутов в контексте отражения
Динамическое генерирование кода
Генерирование IL-кода с помощью класса
DynamicMethod
Стек вычислений
Передача параметров классу DynamicMethod
Генерирование локальных переменных
Ветвление
Создание объектов и вызов экземплярных методов
Обработка исключений
Генерирование сборок и типов
Сохранение порожденных сборок
Объектная модель Reflection.Emit
Генерирование членов типа
Генерирование методов
Генерирование методов экземпляров
Атрибут HideBySig
Генерирование полей и свойств
Генерирование конструкторов
Вызов конструкторов базовых классов
Добавление атрибутов
Генерирование обобщенных методов и типов
Определение обобщенных методов
Определение обобщенных типов
Неудобные цели генерирования
Несозданные замкнутые обобщенные типы
Циклические зависимости
Анализ IL-кода
Написание дизассемблера
Глава 18. Безопасность
Разрешения
Классы CodeAccessPermission и PrincipalPermission
Интерфейс IPermission
Класс PermissionSet
Декларативная и принудительная безопасность
Безопасность обращения к коду
Как CLR выделяет разрешения
Работа в изоляции
Необязательные разрешения
Флаг SecurityAction.RequestOptional
Изоляция другой сборки
Требования связывания и частичное доверие к
вызывающему коду
Как утверждать права
Безопасность в операционной системе
Работа под стандартной пользовательской
учетной записью
Повышение прав и виртуализация
Безопасность, основанная на именах и ролях
Указание пользователей и ролей
Обзор криптографических возможностей
Защита данных Windows
Хеширование
Симметричное шифрование
Шифрование в памяти
Образование цепочек из потоков шифрования
Уничтожение шифрующих объектов
Управление ключами
Шифрование с открытым ключом и постановка
цифровой подписи
Класс RSA
Цифровая подпись
Глава 19. Нити выполнения
Правильное использование нитей
Основы
Передача данных
Совместное обращение к данным
Пулы нитей
Оптимизация пула
Приоритетные и фоновые нити
Приоритет нити
Обработка исключений
Асинхронные делегаты
Синхронизация
Приостановка выполнения
Приостановка и работа вхолостую
Метод SpinWait
Блокировка
Выбор синхронизирующего объекта
Вложенные блокировки
Когда ставить блокировку
Блокировка и атомарность
Производительность кода, соперничество
блокировок и взаимные блокировки
Класс Mutex
Класс Semaphore
Безопасность нитей
Безопасность нитей и типы .NET Framework
Блокирование безопасных объектов
Статические методы
Безопасность нитей в серверах приложений
Безопасность нитей в многофункциональных
клиентских приложениях
Незадерживающая синхронизация
Атомарность и класс Interlocked
Барьеры памяти и некэшируемость
Сигнализация с помощью дескрипторов ожидания
событий
Создание и уничтожение дескрипторов ожидания
Двухсторонняя сигнализация
Создание объекта EventWaitHandle для нескольких
процессов
Пул дескрипторов ожидания
Методы WaitAny, WaitAll и SignalAndWait
Сигнализация с помощью методов Wait и Pulse
Как пользоваться методами Wait и Pulse
Очередь "производитель/потребитель"
Тайм-ауты метода Wait
Двухсторонняя сигнализация
Имитация дескрипторов ожидания
Методы Interrupt и Abort
Метод Interrupt
Метод Abort
Безопасное завершение
Локальное хранение данных
Класс BackgroundWorker
Создание подкласса для BackgroundWorker
Класс ReaderWriterLockSlim
Обновляемые блокировки и рекурсия
Рекурсия блокировок
Таймеры
Многонитевые таймеры
Однонитевые таймеры
Глава 20. Асинхронные методы
Для чего существуют асинхронные методы
Сигнатуры асинхронных методов
Асинхронные методы и асинхронные делегаты
Применение асинхронных методов
Написание асинхронных методов
Поддельные асинхронные методы
Альтернативы асинхронным методам
Асинхронные события
Глава 21. Домены приложений
Архитектура доменов приложений
Создание и уничтожение доменов приложений
Работа с несколькими доменами приложения
Метод DoCallBack
Домены и нити
Совместное обращение к данным из разных
доменов
Применение слотов
Удаленное взаимодействие внутри процесса
Изолирование типов и сборок
Раскрытие типа
Глава 22. Интеграция с DLL
Вызов кода из DLL
Маршалинг обычных типов
Маршалинг классов и структур
Входной и выходной маршалинг
Обратные вызовы из неуправляемого кода
Имитация объединения из языка С
Совместно используемая память
Отображение структуры в неуправляемую память
Ключевое слово fixed
Справочник по атрибутам
Атрибут DllImport
Атрибут StructLayout
Атрибут FieldOffset
Атрибут MarshalAs
Элементы перечисления UnmanagedType
Глава 23. Диагностика
Условная компиляция
Условная компиляция как альтернатива
статическим переменным-флагам
Атрибут Conditional
Альтернативы атрибуту Conditional
Классы Debug и Trace
Класс TraceListener
Принудительная запись на диск и закрытие
слушателей
Интеграция с отладчиком
Присоединение отладчика и прерывание
выполнения
Атрибуты отладчика
Процессы и нити
Анализ работающего процесса
Анализ нитей в процессе
Классы StackTrace и StackFrame
Журнал событий Windows
Запись в журнал событий
Чтение журнала событий
Мониторинг журнала событий
Счетчики производительности
Просмотр доступных счетчиков
Чтение данных из счетчиков производительности
Создание счетчиков и запись данных о
производительности
Класс Stopwatch
Глава 24. Регулярные выражения
Основы регулярных выражений
Откомпилированные регулярные выражения
Перечисление RegexOptions
Экранирование символов
Множества символов
Квантификаторы
"Жадные" и "ленивые" квантификаторы
Директивы нулевой длины
Просмотр вперед и просмотр назад
Якоря
Границы слов
Группы
Именованные группы
Замещение и разбивка на части
Делегат MatchEvaluator
Разбивка текста
Сборник рецептов по регулярным выражениям
Рецепты
Шаблон для номера социальной страховки или
номера телефона в США
Извлечение пар "имя=значение" (по одной в
строчке текста)
Проверка сильного пароля
Строки длиной не менее 80 символов
Разбор даты и времени
Шаблон для римских чисел
Удаление повторяющихся слов
Подсчет слов
Шаблон для глобального уникального
идентификатора
Разбор XML-тега
Разбивка на части слова, написанного в стиле camel
Получение допустимого имени файла
Экранирование символов Unicode для HTML-кода
Справочник по языку регулярных выражений
Приложение 1. Ключевые слова языка C#
Приложение 2. Соответствие сборок пространствам
имен
Предметный указатель
Об авторе
Последние поступления в рубрике "С, С++, C#"
Справочник программиста по C/C++ Шилдт Г.
Герберт Шилдт, легендарный автор книг по программированию, столь умело выделил основные элементы языков С и C++ и организовал их в таком удобном формате, что вы быстро и легко найдете ответы на все свои вопросы по программированию на С и C++. В...... | |
C++ для инженерных и научных расчетов. Руководство Готтшлинг П.
С развитием вычислительной техники научные и инженерные проекты становятся все более крупными и сложными, и все более вероятно, что все новые проекты будут разрабатываться на C++. По мере того, как встраиваемое аппаратное обеспечение становится все...... | |
C# 8.0. Скорая помощь для программистов на C# 8.0. Карманный справочник Албахари Д.
Когда вам нужны ответы на вопросы по программированию на языке С# 8.0, этот узкоспециализированный справочник предложит именно то, что необходимо знать — без всяких длинных введений или раздутых примеров. Легкое в чтении и идеальное в качестве...... |
Если Вы задавались вопросами "где найти книгу в интернете?", "где купить книгу?" и "в каком книжном интернет-магазине нужная книга стоит дешевле?", то наш сайт именно для Вас. На сайте книжной поисковой системы Книгопоиск Вы можете узнать наличие книги Албахари Б., Албахари Д., C# 3.0. Справочник в интернет-магазинах. Также Вы можете перейти на страницу понравившегося интернет-магазина и купить книгу на сайте магазина. Учтите, что стоимость товара и его наличие в нашей поисковой системе и на сайте интернет-магазина книг может отличаться, в виду задержки обновления информации.