Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Книги: [Классика] [Базы данных] [Internet/WWW] [Сети] [Программирование] [UNIX] [Windows] [Безопасность] [Графика] [Software Engineering] [ERP-системы] [Hardware]

     

C# и платформа .NET. Библиотека программиста

Троелсен Э.

Издано: Издательский дом "Питер"
ISBN: 5-318-00750-3
Мягкий переплет, 800 стр.

Начало
Cодержание
Отрывок
[Заказать книгу в магазине "Мистраль"]

Полное содержание

Предисловие
Благодарности

Глава 1. Философия .NET
Современное состояние дел
Как живут программисты, использующие Win32/C
Как живут программисты, использующие C++/MFC
Как живут программисты, использующие Visual Basic
Как живут программисты, использующие Java
Как живут COM-программисты
Как живут программисты, использующие Windows DNA
Решение .NET
Строительные блоки .NET (CLR, CTS и CLS)
Библиотека базовых классов .NET
Преимущества C#
Языки программирования .NET
Обзор двоичных файлов .NET ("сборки")
Сборки из одного и нескольких файлов
Роль Microsoft Intermediate Language
Преимущества IL
Роль метаданных
Простой пример метаданных
Компиляция IL в платформенно-зависимые инструкции
Типы .NET и пространства имен .NET
Основы Common Language Runtime - среды выполнения .NET
Стандартная система типов CTS
Классы CTS
Структуры CTS
Интерфейсы CTS
Члены типов CTS
Перечисления CTS
Делегаты CTS
Встроенные типы данных CTS
Основы CLS
Работа с пространствами имен
Важнейшие пространства имен .NET
Использование пространств имен в коде приложения
Обращения к внешним сборкам
Как получить дополнительную информацию о пространствах имен и типах
ILDasm.exe
Выгрузка в файл иерархии типов и членов сборки
Выгрузка в файл вместе с инструкциями IL
Просмотр метаданных типов
Web-приложение ClassViewer
Графическое приложение WinCV
Создание приложений C# с использованием компилятора командной строки
Ссылки на внешние сборки
Компиляция нескольких исходных файлов
Создание приложений C# с использованием интегрированной среды разработки Visual Studio.NET
Начало работы со средой Visual Studio.NET
Окно Solution Explorer
Окно Properties
Экономное размещение кода на экране
Ссылки на внешние сборки
Отладка в Visual Studio.NET
Работа с окном Server Explorer
Средства для работы с XML
Поддержка диаграмм UML
Утилита Object Browser
Средства для работы с базами данных
Встроенная справка
Подведение итогов
Глава 2. Основы языка C#
Анатомия класса C#
Как еще можно объявить метод Main()
Обработка параметров командной строки
Создание объектов: конструкторы
Будет ли происходить утечка памяти?
Композиция приложения C#
Инициализация членов
Ввод и вывод с использованием класса Console
Средства форматирования строк в C#
Структурные и ссылочные типы
Структурные и ссылочные типы: исследуем дальше
Точка отсчета для любых типов: System.Object
Замещение методов System.Object
Статические члены System.Object
Системные типы данных и псевдонимы C#
Избранные заметки о некоторых типах данных
От структурного типа к ссылочному типу и наоборот: упаковка и распаковка
Значения по умолчанию для встроенных типов данных
Константы
Циклы в C#
Выражение for
Выражение foreach/in
Выражения while и do/while
Средства управления логикой работы программ
в C# Дополнительные операторы C#
Определение пользовательских методов класса
Модификаторы уровня доступа к методам
Статические методы и методы экземпляров
Статические данные
Интересное рядом: некоторые статические члены класса Environment
Модификаторы для параметров методов
Работа с массивами
Многомерные массивы
Базовый класс System.Array
Работа со строками
Управляющие последовательности и вывод служебных символов
Применение System.Text.StringBuilder
Перечисления C#
Базовый класс System.Enum
Определение структур в C#
Еще раз об упаковке и распаковке
Определяем пользовательские пространства имен
Применение пространств имен для разрешения конфликтов между именами классов
Использование псевдонимов для имен классов
Вложенные пространства имен
Подведение итогов
Глава 3. C# и объектно-ориентированное программирование
Формальное определение класса в C#
Ссылки на самого себя
Определение открытого интерфейса по умолчанию
Указание области видимости на уровне типа: открытые и внутренние типы
Столпы объектно-ориентированного программирования
Инкапсуляция
Наследование: отношения "быть" и "иметь"
Полиморфизм: классический и для конкретного случая
Средства инкапсуляции в C#
Реализация инкапсуляции при помощи традиционных методов доступа и изменения
Второй способ инкапсуляции: применение свойств класса
Внутреннее представление свойств C#
Свойства только для чтения, только для записи и статические
Псевдоинкапсуляция: создание полей "только для чтения"
Статические поля "только для чтения"
Поддержка наследования в C#
Работа с конструктором базового класса
Можно ли производить наследование от нескольких базовых классов
Хранение "семейных тайн": ключевое слово protected
Запрет наследования: классы, объявленные как sealed
Применение модели включения-делегирования
Определение вложенных типов
Поддержка полиморфизма в C#
Абстрактные классы
Принудительный полиморфизм: абстрактные методы
Контроль версий членов класса
Приведение типов в C#
Приведение числовых типов
Обработка исключений
Генерация исключения
Перехват исключений
Создание пользовательских исключений, первый этап
Создание пользовательских исключений, второй этап
Обработка нескольких исключений
Блок finally
Последние замечания о работе с исключениями
Жизненный цикл объектов
Завершение ссылки на объект
Завершение в подробностях
Создание метода удаления для конкретного случая
Интерфейс IDisposable
Взаимодействие со сборщиком мусора
Оптимизация сборки мусора
Подведение итогов
Глава 4. Интерфейсы и коллекции
Программирование с использованием интерфейсов
Реализация интерфейса
Получение ссылки на интерфейс
Интерфейсы как параметры
Явная реализация интерфейса
Создание иерархий интерфейсов
Наследование от нескольких базовых интерфейсов
Создание пользовательского нумератора (интерфейсы IEnumerable и IEnumerator)
Создание клонируемых объектов (интерфейс ICloneable)
Создание сравниваемых объектов (интерфейс IComparable)
Сортировка по нескольким идентификаторам (IComparer)
Как с помощью специальных свойств сделать сортировку более удобной
Пространство имен System.Collections
Пространство имен System.Collections.Specialized
Применение ArrayList
Подведение итогов
Глава 5. Дополнительные возможности классов C#
Создание пользовательского индексатора
Перегрузка операторов
Перегрузка операторов равенства
Перегрузка операторов сравнения
Последние замечания о перегрузке операторов
Делегаты
Пример делегата
Делегаты как вложенные типы
Члены System.MulticastDelegate
Применение CarDelegate
Анализ работы делегата
Многоадресность
Делегаты, указывающие на обычные функции
События
Как работают события
Прием событий
Объекты как приемники событий
Реализация обработки событий с использованием интерфейсов
Документирование в формате XML
Просмотр файла документации в формате XML
Создание документации в формате HTML
Подведение итогов
Глава 6. Сборки, потоки и домены приложений
Проблемы с классическими двоичными файлами
COM
Проблема: работа с версиями COM
Проблема: развертывание приложений COM
Обзор сборок .NET
Сборки из одного и нескольких файлов
Логическое и физическое представление сборки
Сборки обеспечивают повторное использование кода
Сборки - контейнеры для типов
В сборках предусмотрены встроенные средства самоописания и контроля версий
Сборки определяют контекст безопасности
Разные версии сборок могут выполняться параллельно
Создание тестовой однофайловой сборки
Клиентское приложение C#
Клиентское приложение Visual Basic.NET
Межъязыковое наследование
Подробности манифеста CarLibrary
Метаданные и код IL для типов CarLibrary
Частные сборки
Технология "зондирования"
Идентификация частной сборки
Частные сборки и файлы конфигурации приложений
Процесс загрузки частной сборки в целом
Сборки для общего доступа
Проблемы с GAC?
Общие ("сильные") имена сборок
Создание сборки для общего пользования
Установка сборки в глобальный кэш сборок (GAC)
Применение сборки для общего пользования в приложении
Политика версий .NET
Запись информации о версии
Работа с разными версиями SharedAssembly
Создаем SharedAssembly версии 2.0
Политика версий .NET по умолчанию
Управление загрузкой разных версий сборок
Администраторский файл конфигурации
Работа с потоками в традиционных приложениях Win32
Проблемы одновременности и синхронизации потоков
Что такое домен приложения
Работаем с доменами приложений
Пространство имен System.Threading
Работа с классом Thread
Запуск вторичных потоков
Именованные потоки
Параллельная работа потоков
Как "усыпить" поток
Одновременный доступ к данным из разных потоков
Ключевое слово lock
Использование System.Threading.Monitor
Применение System.Threading.Interlocked
Подведение итогов
Глава 7. Рефлексия типов и программирование с использованием атрибутов
Что такое рефлексия типов
Класс Type
Получение объекта класса Type
Возможности класса Type
Типы пространства имен System.Reflection
Загрузка сборки
Вывод информации о типах в сборке
Вывод информации о членах класса
Вывод информации о параметрах метода
Применение позднего связывания
Класс System.Activator
Применение динамических сборок
Знакомство с пространством имен System.Reflection.Emit
Создаем динамическую сборку
Как использовать динамическую сборку
Программирование с использованием атрибутов
Работа с существующими атрибутами
Создание пользовательских атрибутов
Как ограничить использование атрибута определенными типами
Атрибуты уровня сборки и модуля
Файл AssemblyInfo.cs
Как работать с атрибутами в процессе выполнения программы
Подведение итогов
Глава 8. Окна становятся лучше: введение в Windows.Forms
Два главных пространства имен для организации графического интерфейса
Обзор пространства имен Windows.Forms
Взаимодействие с типами Windows.Forms
Создание нового проекта
Создание главного окна приложения (вручную)
Создание проекта Windows Forms
Класс System.Windows.Forms.Application
Работаем с классом Application
Реагируем на событие ApplicationExit
Препроцессинг сообщений при помощи класса Application
Анатомия формы
Классы System.Object и MarshalByRefObject
Класс Component
Класс Control
Настройка стиля формы
События класса Control
Работаем с классом Control
Реагируем на события мыши: часть первая
Реагируем на события мыши: часть вторая
Реагируем на события клавиатуры
Еще немного о классе Control
Painting Basics
Класс ScrollableControl
Класс ContainerControl
Класс Form
Используем возможности класса Form
Создаем меню
Вложенный класс Menu$MenuItemCollection
Создание системы меню в приложении
Добавляем еще одно меню верхнего уровня
Создаем контекстное меню
Дополнительные возможности меню
Создаем меню при помощи IDE Visual Sudio.NET
Что такое строка состояния
Создаем строку состояния
Работаем с классом Timer
Отображение в строке состояния подсказок к пунктам меню
Создаем панель инструментов
Создаем панели инструментов при помощи Visual Studio IDE
Создаем набор изображений (объект ImageList) при помощи
Visual Studio
Пример приложения Windows Forms для работы с реестром и журналом событий Windows 2000
Взаимодействие с системным реестром
Взаимодействие с журналом событий Windows 2000
Как считать информацию из журнала событий
Подведение итогов
Глава 9. Графика становится лучше (GDI+)
Обзор пространств имен GDI+
Пространство имен System.Drawing
Служебные типы System.Drawing
Тип Point(F)
Тип Rectangle(F)
Тип Size(F)
Класс Region
Сеансы вывода графики
Как сделать клиентскую область вашего приложения "недействительной"
Выводим графические объекты без события Paint
Возможности класса Graphics
Система координат по умолчанию в GDI+
Применение альтернативных единиц измерения
Применение альтернативных точек отсчета
Работа с цветом
Возможности класса ColorDialog
Работа со шрифтами
Семейства шрифтов
Единицы измерения для шрифта
Создаем приложение с возможностью выбора шрифта
Выводим информацию об установленных шрифтах (System.Drawing.Text)
Класс FontDialog
Обзор пространства имен System.Drawing.Drawing2D
Определение качества вывода графического объекта
Работа с перьями
Работаем с "наконечниками" перьев
Работаем с кистью
Работаем со штриховыми кистями
Работаем с текстурными кистями
Работаем с градиентными кистями
Вывод изображений
Перетаскивание, проверка попадания в область, занимаемую изображением,и элемент управления PictureBox
Еще о проверке попадания
Проверка попадания в непрямоугольные области
Работа с форматами реcурсов .NET
Пространство имен System.Resources
Создание файлов *.resx программным образом
Чтение из файлов *.resx программным образом
Создание файлов *.resources
Работаем с типом ResourceWriter
Работаем с типом ResourceManager
Работа с ресурсами при помощи IDE Visual Studio.NET
Подведение итогов
Глава 10. Элементы управления
Иерархия классов элементов управления
Как вручную добавить элементы управления на форму
Класс Control$ControlCollection
Как добавить элементы управления на форму при помощи Visual Studio
Элемент управления TextBox
Некоторые возможности TextBox
Великая и могучая кнопка (а также родительский класс ButtonBase)
Выравнивание текста и изображений относительно краев кнопки
Некоторые возможности работы с кнопками
Работаем с флажками
Работаем с переключателями и группирующими рамками
Элемент управления CheckedListBox
Списки
Комбинированные списки
Настраиваем порядок перехода по Tab
Tab Order Wizard
Элемент управления TrackBar
Элемент управления MonthCalendar
Еще немного о типе DateTime
Элементы управления UpDown
Элемент управления Panel
Всплывающие подсказки (ToolTips) для элементов управления
Добавление всплывающей подсказки при помощи графических средств Visual Studio
Элемент управления ErrorProvider
Закрепление элемента управления в определенном месте формы
Стыковка элемента управления с краем формы
Создание пользовательских диалоговых окон
Пример использования диалогового окна в приложении
Как получить данные из диалогового окна
Наследование форм
Подведение итогов
Глава 11. Ввод, вывод и сериализация объектов
Знакомство с пространством имен System.IO
Типы Directory(Info) и File(Info)
Абстрактный класс FileSystemInfo
Работа с типом DirectoryInfo
Перечисление FileAttributes
Получение доступа к файлам через объект DirectoryInfo
Создаем подкаталоги при помощи класса DirectoryInfo
Статические члены класса Directory
Класс FileInfo
Использование метода FileInfo.Open()
Методы FileInfo.OpenRead() и FileInfo.OpenWrite()
Методы FileInfo.OpenText(), FileInfo.CreateText() и FileInfo.AppendText()
Абстрактный класс Stream
Работа с объектом FileStream
Класс MemoryStream
Класс BufferedStream
Классы StreamWriter и StreamReader
Запись в текстовый файл
Считывание информации из текстового файла
Класс StringWriter
Класс StringReader
Работа с двоичными данными (классы BinaryReader и BinaryWriter)
Заметки на полях
Сохранение объектов в .NET
Графы для отношений объектов
Настройка объектов для сериализации
Выбираем объект Formatter
Пространство имен System.Runtime.Serialization
Сериализация в двоичном формате
Сериализация в формате SOAP
Сериализация в пользовательском формате и интерфейс ISerializable
Простой пример пользовательской сериализации
Приложение для регистрации автомобилей с графическим интерфейсом
Реализация добавления новых объектов Car
Код сериализации
Подведение итогов
Глава 12. Взаимодействие с унаследованным программным кодом
Главные вопросы совместимости
Пространство имен System.Runtime.InteropServices
Взаимодействие с модулями DLL, созданными на C
Поле ExactSpelling
Поле CharSet
Поля CallingConvention и EntryPoint
Взаимодействие .NET и COM
Представление типов COM как типов .NET
Управление ссылками на объекты сокласса
Сокрытие низкоуровневых интерфейсов COM
Создание простого COM-сервера в Visual Basic 6.0
Что находится в IDL нашего COM-сервера
Создаем простой клиент COM в Visual Basic 6.0
Импорт библиотеки типов
Добавление ссылки на сборку
Раннее связывание с COM-классом CoCalc
Позднее связывание с соклассом CoCalc
Особенности созданной нами сборки
Создаем COM-сервер при помощи ATL
Добавление методов в интерфейс по умолчанию
Генерация события COM
Генерация ошибки COM
Представление внутренних подобъектов и применение SAFEARRAY
Последний штрих: создаем перечисление IDL
Клиент COM-сервера в Visual Basic 6.0
Создаем сборку и анализируем процесс преобразования
Преобразование библиотеки типов
Преобразование интерфейсов COM
Преобразование атрибутов параметров в коде IDL
Преобразование иерархии интерфейсов
Преобразование соклассов и свойств COM
Преобразование перечислений COM
Преобразование COM SAFEARRAY
Перехват событий COM
Обработка ошибки COM
Полный код клиента C#
Обращение клиента COM к сборке .NET
Роль CCW
Понятие интерфейса класса
Определяем интерфейс класса
Создание типа .NET
Генерация библиотеки типов и регистрация типов .NET
Анализ созданной библиотеки типов
Интерфейс _Object
Сгенерированное выражение библиотеки
Просмотр типов .NET в OLE/COM Object Viewer
Просмотр записей в реестре
Создаем клиента в Visual Basic 6.0
Некоторые особенности отображения типов .NET в COM
Анализ кода COM, сгенерированного для базового класса
Анализ кода COM, сгенерированного для производного класса
Управление процессом генерации кода IDL (как повлиять на то, что делает утилита tlbexp.exe)
Что у нас получилось
Управление регистрацией промежуточного модуля CCW
Взаимодействие со службами COM+
Пространство имен System.EnterpriseServices
Особенности создания типов .NET для работы
под COM+ Пример класса C# для работы под COM+
Добавление атрибутов уровня сборки для COM+
Помещаем сборку в каталог COM+
Проверяем установку при помощи Component Services Explorer
Подведение итогов
Глава 13. Доступ к данным при помощи ADO.NET
Почему потребовалось создавать ADO.NET
ADO.NET: общая картина
Знакомство с пространствами имен ADO.NET
Типы пространства имен System.Data
Тип DataColumn
Создаем объект DataColumn
Добавляем объект DataColumn в DataTable
Делаем столбец первичным ключом таблицы
Настройка автоматического увеличения значений для столбцов
Настраиваем представление столбца в формате XML
Тип DataRow
Работа со свойством DataRow.RowState
Работа со свойством ItemArray
Тип DataTable
Создаем объект DataTable
Удаляем строки из таблицы
Применение фильтров и порядка сортировки для DataTable
Внесение изменений в строки
Тип DataView
Возможности класса DataSet
Члены класса DataSet
Создание объекта DataSet
Моделируем отношения между таблицами при помощи класса DataRelation
Переход между таблицами, участвующими в отношении
Чтение и запись объектов DataSet в формате XML
Создание примера простой базы данных
Управляемые провайдеры ADO.NET
Управляемый провайдер OLE DB
Установление соединения при помощи типа OleDbConnection
Построение команды SQL
Работа с OleDbDataReader
Подключение к базе данных Access
Выполнение хранимых процедур
Тип OleDbDataAdapter
Заполнение данными объекта DataSet при помощи OleDbDataAdapter
Работа с управляемым провайдером SQL
Пространство имен System.Data.SqlTypes
Вставка новых записей при помощи SqlDataAdapter
Изменение записей в таблице при помощи SqlDataAdapter
Автоматическое создание команд SQL
Заполнение объекта DataSet с несколькими таблицами и добавление объектов DataRelations
Подведение итогов
Глава 14. Разработка web-приложений и ASP.NET
Web-приложения и web-серверы
Что такое виртуальные каталоги
Структура документа HTML
Форматирование текста средствами HTML
Заголовки HTML
HTML-редактор Visual Studio.NET
Разработка форм HTML
Создаем пользовательский интерфейс
Добавление изображений
Клиентские скрипты
Пример клиентского скрипта
Реализация проверки введенных пользователем данных
Передаем данные формы (методы GET и POST)
Синтаксис строки запроса HTTP
Создание классической страницы ASP
Принимаем данные, переданные методом POST
Первое приложение ASP.NET
Некоторые проблемы классических ASP
Некоторые преимущества ASP.NET
Пространства имен ASP.NET
Наиболее важные типы пространства имен System.Web
Приложение и сеанс подключения пользователя
Создание простого web-приложения на C#
Исходный файл *.aspx
Файл web.config
Исходный файл Global.asax
Простой код ASP.NET на C#
Архитектура web-приложения ASP.NET
Тип System.Web.UI.Page
Связка *.aspx/Codebehind
Свойство Page.Request
Свойство Page.Response
Свойство Page.Application
Отладка и трассировка приложений ASP.NET
Элементы управления WebForm
Создание элементов управления WebForm
Иерархия классов элементов управления WebForm
Виды элементов управления WebForm
Базовые элементы управления WebForm
Элементы управления с дополнительными возможностями
Элементы управления для работы с источниками данных
Элементы управления для проверки вводимых пользователем данных
Обработка событий элементов управления WebForm
Подведение итогов
Глава 15. Web-службы
Роль web-служб
Инфраструктура web-службы
Протокол подключения
Служба описания
Служба обнаружения
Обзор пространств имен web-служб
Пространство имен System.Web.Services
Пример элементарной web-службы
Исходный файл C# для web-службы (*.asmx.cs)
Реализуем методы web-службы
Работа клиента с web-службой
Тип WebMethodAttribute
Базовый класс System.Web.Services.WebService
Web Service Description Language (WSDL)
Протоколы подключения к web-службам
Обмен данными при помощи HTTP-GET и HTTP-POST
Обмен данными при помощи SOAP
Прокси-сборки для web-служб
Создание прокси-сборки при помощи утилиты wsdl.exe
Компилируем прокси-сборку
Создание клиента для работы через прокси-сборку
Создание прокси-сборки в Visual Studio.NET
Пример более сложной web-службы (и ее клиентов)
Сериализация пользовательских типов
Настраиваем клиента web-службы
Создание типов для сериализации (некоторые уточнения)
Протокол обнаружения web-службы
Добавление новой web-службы
Подведение итогов

Алфавитный указатель

Начало
Cодержание
Отрывок
[Заказать книгу в магазине "Мистраль"]

 

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в 21 локации

От 104 рублей в месяц

Безлимитный трафик. Защита от ДДоС.

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...