C# 2010. Ускоренный курс для профессионалов

Трей Нэш

Книга «C# 2010: ускоренный курс для профессионалов» - руководство по созданию эффективного кода на C# 4.0. В ней показано, как пишутся программы, которые характеризуются надежностью, устойчивостью к ошибкам и готовностью быть помещенными в широко доступные библиотеки. В книге предлагается хорошо организованный и легко читаемый текст, посвященный C# 2010 и хорошо испытанным и правильным идиомам, шаблонам и принципам проектирования, которые созревали на объектно-ориентированной арене в течение всего времени существования .NET Framework. На многочисленных коротких примерах демонстрируется регулярное использование общих шаблонов проектирования в .NET Framework и показывается, как применять их в собственных разработках.

В этой книге детально рассматриваются все новые средства языка C#, включая динамические типы, ковариантность и контравариантность, расширяющие методы, лямбда-выражения, язык LINQ и многие другие. Новые динамические типы существенно упрощают реализацию средств взаимодействия, создание которых раньше сопровождалось значительными трудностями. Расширяющие методы, лямбда-выражения и язык LINQ поощряют использование модели функционального программирования в рамках того, что ранее было в основном императивным языком программирования. После того как вы начнете применять их, вы очень быстро ощутите, насколько расширились ваши возможности в построении решений. Еще одной областью интересов разработчиков на C# является написание безопасного к исключениям и устойчивого к ошибкам кода. Среда .NET Framework поддерживает множество возможностей, включая ограниченные области выполнения, которые помогают защищать состояние приложения в случае асинхронного исключения. Все эти возможности также рассматриваются в книге. Успешного вам программирования, и помните, что определение контракта перед реализацией, стремление к нейтральному в отношении исключений коду и экономное использование ресурсов - это ключи к получению успешного продукта.

Книга ведущего специалиста в области технологий .NET представляет собой интенсивный курс по новейшей версии языка C#, воплотившей в себе важные дополнения и предлагающей среду, в которой функциональное программирование может органично переплетаться с обычным стилем императивного программирования C#. Эта книга может служить как кратким учебным пособием, так и постоянно используемым справочником. Вы быстро освоите синтаксис C#, изучая, как среда CLR упрощает решение многих задач программирования. Вы также получите большой набор рекомендаций по построению эффективного, многократно используемого и надежного кода. Зачем тратить месяцы или даже годы на поиск наилучших подходов к проектированию и написанию кода C#, если в данной книге будет показано, как все делать правильно с самого начала? Вы узнаете, как

  • C# работает и взаимодействует с CLR;
  • использовать массивы, коллекции и итераторы;
  • обрабатывать события с помощью делегатов и анонимных функций;
  • проектировать и использовать обобщенные типы и методы;
  • строить высокоэффективные и надежные многопоточные приложения;
  • применять анонимные типы, лямбда-выражения и расширяющие методы, появившиеся в C#.

Книга рассчитана на программистов разной квалификации, а также будет полезна студентам и преподавателям дисциплин, связанных с программированием и разработкой для .NET.

Издательство: Вильямс, 2010 г.

ISBN 978-5-8459-1638-9, 978-1-43-022537-9

Количество страниц: 592.

Содержание книги «C# 2010. Ускоренный курс для профессионалов»:

  • 14 Об авторе
  • 14 О техническом редакторе
  • 15 Благодарности
  • 16 Введение
    • 17 Как организована эта книга
    • 20 От издательства
  • 21 Глава 1. Обзор C#
    • 21 Отличия между C# и C++
      • 21 Язык C#
      • 22 Язык C++
      • 23 Сборка мусора CLR
    • 23 Пример программы на C#
    • 25 Обзор средств, добавленных в C# 2.0
    • 26 Обзор средств, добавленных в C# 3.0
    • 27 Обзор новых средств C# 4.0
    • 28 Резюме
  • 29 Глава 2. C# и CLR
    • 29 JIT-компилятор и CLR
    • 31 Сборки и загрузчик сборок
      • 32 Минимизация рабочего набора приложения
      • 33 Назначение сборкам имен
      • 33 Загрузка сборок
    • 34 Метаданные
    • 35 Совместимость между языками
    • 36 Резюме
  • 37 Глава 3. Обзор синтаксиса C#
    • 37 C# — строго типизированный язык
    • 38 Выражения
    • 39 Операторы и выражения
    • 40 Типы и переменные
      • 42 Типы значений
      • 45 Ссылочные типы
      • 45 Инициализация переменных по умолчанию
      • 46 Неявно типизированные локальные переменные
      • 48 Преобразования типов
      • 50 Операции as и is
      • 51 Обобщения
    • 53 Пространства имен
      • 54 Определение пространств имен
      • 55 Использование пространств имен
    • 56 Поток управления
      • 56 if-else, while, do-while и for
      • 56 switch
      • 57 foreach
      • 58 break, continue, goto, return и throw
    • 58 Резюме
  • 59 Глава 4. Классы, структуры и объекты
    • 61 Определения классов
      • 62 Поля
      • 65 Конструкторы
      • 66 Методы
      • 67 Свойства
      • 72 Инкапсуляция
      • 76 Доступность
      • 77 Интерфейсы
      • 79 Наследование
      • 85 Герметизированные классы
      • 86 Абстрактные классы
      • 87 Вложенные классы
      • 90 Индексаторы
      • 92 Частичные классы
      • 93 Частичные методы
      • 94 Статические классы
    • 96 Зарезервированные имена членов
    • 97 Определения типов значений
      • 100 Смысл ключевого слова this
      • 102 Финализаторы
      • 102 Интерфейсы
    • 103 Анонимные типы
    • 105 Инициализаторы объектов
    • 108 Упаковка и распаковка
      • 112 Когда происходит упаковка
      • 113 Эффективность и путаница
    • 114 Класс System.Object
      • 116 Эквивалентность и ее смысл
      • 116 Интерфейс IComparable
    • 116 Создание объектов
      • 116 Ключевое слово new
      • 118 Инициализация полей
      • 119 Статические конструкторы (класса)
      • 122 Конструктор экземпляра и порядок создания
    • 125 Уничтожение объектов
      • 126 Финализаторы
      • 127 Детерминированное уничтожение
      • 128 Обработка исключений
    • 128 Одноразовые объекты
      • 129 Интерфейс IDisposable
      • 131 Ключевое слово using
    • 132 Типы параметров методов
      • 132 Аргументы-значения
      • 133 Аргументы ref
      • 134 Параметры out
      • 135 Массивы params
    • 136 Перегрузка методов
      • 136 Необязательные аргументы
      • 137 Именованные аргументы
    • 140 Наследование и виртуальные методы
      • 140 Виртуальные и абстрактные методы
      • 141 Методы new и override
      • 143 Методы sealed
    • 144 Завершающие замечания о виртуальных методах C#
    • 144 Наследование, включение и делегирование
      • 144 Выбор между интерфейсом и наследованием класса
      • 146 Сравнение делегирования и композиции с наследованием
    • 148 Резюме
  • 149 Глава 5. Интерфейсы и контракты
    • 150 Интерфейсы определяют типы
    • 151 Определение интерфейсов
      • 152 Что может быть интерфейсом?
      • 152 Наследование интерфейсов и сокрытие членов
    • 154 Реализация интерфейсов
      • 155 Неявная реализация интерфейса
      • 155 Явная реализация интерфейса
      • 157 Переопределение реализаций интерфейсов в производных классах
      • 160 Остерегайтесь побочных эффектов от реализации интерфейсов типами значений
    • 161 Правила сопоставления членов интерфейсов
    • 164 Явная реализация интерфейса с помощью типа значений
    • 166 Соображения, касающиеся версий
    • 167 Контракты
      • 167 Контракты, реализованные классами
      • 169 Контракты интерфейса
    • 170 Выбор между интерфейсами и классами
    • 173 Резюме
  • 175 Глава 6. Перегрузка операций
    • 175 Можете — не значит должны
    • 175 Типы и форматы перегруженных операций
    • 177 Операции не должны изменять свои операнды
    • 177 Имеет ли значение порядок параметров?
    • 178 Перегрузка операции сложения
    • 179 Операции, допускающие перегрузку
      • 179 Операции сравнения
      • 182 Операции преобразования
      • 185 Булевские операции
    • 187 Резюме
  • 189 Глава 7. Безопасность и обработка исключений
    • 189 Как CLR трактует исключения
    • 190 Механизм обработки исключений в C#
      • 190 Генерация исключений
      • 190 Изменения, касающиеся необработанных исключений, которые появились в .NET 2.0
      • 192 Обзор синтаксиса операторов try, catch и finally
      • 194 Повторная генерация и трансляция исключений
      • 196 Исключения, сгенерированные в блоке finally
      • 197 Исключения, сгенерированные в финализаторах
      • 198 Исключения, сгенерированные в статических конструкторах
    • 199 Кто должен обрабатывать исключения?
    • 200 Избегайте применения исключений для управления потоком выполнения
    • 200 Обеспечение нейтральности к исключениям
      • 201 Базовая структура нейтрального к исключениям кода
      • 206 Ограниченные области выполнения
      • 208 Критичные финализаторы и SafeHandle
    • 212 Создание пользовательских классов исключений
    • 214 Работа с выделенными ресурсами и исключениями
    • 218 Обеспечение поведения отката
    • 221 Резюме
  • 223 Глава 8. Работа со строками
    • 223 Обзор String
    • 224 Строковые литералы
    • 225 Спецификаторы формата и глобализация
      • 226 Object.ToString, IFormattable и CultureInfo
      • 227 Создание и регистрация пользовательских типов CultureInfo
      • 229 Форматные строки
      • 230 Console.WriteLine и String.Format
      • 231 Примеры строкового форматирования в пользовательских типах
      • 232 ICustomFormatter
      • 234 Сравнение строк
    • 236 Работа со строками из внешних источников
    • 238 StringBuilder
    • 239 Поиск строк с помощью регулярных выражений
      • 240 Поиск с помощью регулярных выражений
      • 241 Поиск и группирование
      • 245 Замена текста с помощью Regex
      • 247 Варианты создания Regex
    • 248 Резюме
  • 249 Глава 9. Массивы, типы коллекций и итераторы
    • 249 Представление массивов
      • 251 Неявно типизированные массивы
      • 253 Возможность преобразования и ковариантность
      • 254 Возможности сортировки и поиска
      • 254 Синхронизация
      • 255 Сравнение векторов и массивов
    • 256 Многомерные прямоугольные массивы
    • 258 Многомерные зубчатые массивы
    • 260 Типы коллекций
      • 260 Сравнение ICollection<T> и ICollection
      • 261 Синхронизация коллекций
      • 262 Списки
      • 263 Словари
      • 264 Наборы
      • 264 System.Collections.ObjectModel
      • 267 Эффективность
    • 268 IEnumerable<T>, IEnumerator<T>, IEnumerable и IEnumerator
      • 272 Типы, производящие коллекции
    • 272 Итераторы
      • 277 Прямые, обратные и двунаправленные итераторы
    • 281 Инициализаторы коллекций
    • 282 Резюме
  • 283 Глава 10. Делегаты, анонимные функции и события
    • 283 Обзор делегатов
    • 284 Создание и использование делегатов
      • 285 Одиночный делегат
      • 286 Цепочки делегатов
      • 288 Итерация по цепочкам делегатов
      • 289 Несвязанные делегаты (делегаты открытого экземпляра)
    • 292 События
    • 296 Анонимные методы
      • 298 Захваченные переменные и замыкания
      • 300 Остерегайтесь сюрпризов, связанных с захваченными переменными
      • 303 Анонимные методы как привязки параметров делегатов
    • 306 Шаблон Strategy
    • 307 Резюме
  • 309 Глава 11. Обобщения
    • 310 Разница между обобщениями и шаблонами C++
    • 311 Эффективность и безопасность типов обобщений
    • 313 Определения обобщенных типов и конструируемые типы
      • 313 Обобщенные классы и структуры
      • 316 Обобщенные интерфейсы
      • 317 Обобщенные методы
      • 319 Обобщенные делегаты
      • 322 Преобразование обобщенного типа
      • 322 Выражение значения по умолчанию
      • 324 Типы, допускающие значения null
      • 325 Контроль доступа к конструируемым типам
      • 326 Обобщения и наследование
    • 327 Ограничения
      • 332 Ограничения на неклассовых типах
    • 332 Ковариантность и контравариантность
      • 334 Ковариантность
      • 337 Контравариантность
      • 338 Инвариантность
      • 339 Вариантность и делегаты
    • 343 Обобщенные системные коллекции
    • 344 Обобщенные системные интерфейсы
    • 346 Проблемы выбора и их решение
      • 346 Преобразования и операции внутри обобщенных типов
      • 354 Динамическое создание конструируемых типов
    • 356 Резюме
  • 357 Глава 12. Многопоточность в C#
    • 357 Многопоточность в C# и .NET
      • 358 Запуск потоков
      • 360 Передача данных новым потокам
      • 361 Использование ParameterizedThreadStart
      • 362 Шаблон IOU и асинхронные вызовы методов
      • 362 Состояния потока
      • 364 Завершение потоков
      • 366 Останавливающиеся и пробуждающиеся потоки
      • 368 Ожидание завершения потока
      • 368 Потоки переднего плана и фоновые потоки
      • 369 Локальное хранилище потока
      • 372 Как неуправляемые потоки и апартаменты COM приспособлены друг к другу
    • 373 Синхронизация работы между потоками
      • 375 Легковесная синхронизация с помощью класса Interlocked
      • 381 Класс SpinLock
      • 382 Класс Monitor
      • 391 Блокирующие объекты
      • 396 Семафоры
      • 398 События
      • 399 Объекты синхронизации Win32 и WaitHandle
    • 402 Использование ThreadPool
      • 403 Асинхронные вызовы методов
      • 410 Таймеры
    • 411 Параллельное программирование
      • 412 Класс Task
      • 413 Класс Parallel
      • 417 Простой вход в пул потоков
    • 418 Классы коллекций, безопасные в отношении потоков
    • 419 Резюме
  • 421 Глава 13. В поисках канонических форм C#
    • 422 Канонические формы ссылочных типов
      • 422 Классы должны помечаться как sealed по умолчанию
      • 423 Использование шаблона NVI
      • 426 Является ли Object клонируемым?
      • 431 Является ли Object одноразовым?
      • 434 Нужен ли финализатор для Object?
      • 441 Что означает эквивалентность для данного объекта?
      • 441 Ссылочные типы и эквивалентность идентичности
      • 444 Эквивалентность значений
      • 445 Переопределение Object.Equals для ссылочных типов
      • 448 Если переопределен метод Equals, то необходимо переопределить и GetHashCode
      • 451 Поддерживает ли объект упорядочивание?
      • 453 Является ли Object форматируемым?
      • 457 Является ли Object преобразуемым?
      • 459 Всегда отдавайте предпочтение безопасности типов
      • 463 Использование неизменяемых ссылочных типов
    • 465 Канонические формы типов значений
      • 466 Переопределение Equals для повышения производительности
      • 470 Поддерживают ли значения этого типа какие-то интерфейсы?
      • 471 Реализация безопасных к типам версий для членов интерфейса и унаследованных методов
    • 473 Резюме
      • 473 Список вопросов для ссылочных типов
      • 475 Список вопросов для типов значений
  • 477 Глава 14. Расширяющие методы
    • 477 Введение в расширяющие методы
      • 478 Как компилятор находит расширяющие методы?
      • 481 Что происходит «за кулисами»
      • 481 Читабельность или понятность кода
    • 483 Рекомендации по использованию
      • 483 Использование расширяющих методов вместо наследования
      • 484 Изоляция расширяющих методов в отдельном пространстве имен
      • 485 Изменение контракта типа может нарушить работу расширяющих методов
    • 485 Трансформации
    • 489 Цепочки операций
    • 491 Пользовательские итераторы
      • 492 Заимствование из функционального программирования
    • 498 Шаблон Visitor
    • 501 Резюме
  • 503 Глава 15. Лямбда-выражения
    • 503 Введение в лямбда-выражения
      • 504 Лямбда-выражения и замыкания
      • 507 Замыкания в C# 1.0
      • 508 Замыкания в C# 2.0
      • 509 Лямбда-операторы
    • 509 Деревья выражений
      • 512 Операции над выражениями
      • 513 Функции как данные
    • 513 Полезные применения лямбда-выражений
      • 514 Вернемся к итераторам и генераторам
      • 517 Замыкание (захват переменной) и мемоизация
      • 521 Каррирование
      • 523 Анонимная рекурсия
    • 524 Резюме
  • 525 Глава 16. LINQ: язык интегрированных запросов
    • 526 Мост к данным
      • 526 Выражения запросов
      • 528 Вернемся к расширяющим методам и лямбда-выражениям
    • 529 Стандартные операции запросов
    • 530 Ключевые слова запросов C#
      • 530 Конструкция from и переменные диапазона
      • 532 Конструкция join
      • 534 Конструкция where и фильтры
      • 534 Конструкция orderby
      • 535 Конструкция select и проекция
      • 537 Конструкция let
      • 538 Конструкция group
      • 541 Конструкция into и продолжение
    • 542 Преимущества лени
      • 542 Поощрение лени итераторами C#
      • 543 Ниспровержение лени
      • 545 Немедленное выполнение запросов
      • 545 Еще раз о деревьях выражений
    • 546 Приемы функционального программирования
      • 546 Пользовательские стандартные операции запросов и «ленивое» вычисление
      • 553 Замена операторов foreach
    • 555 Резюме
  • 557 Глава 17. Динамические типы
    • 557 Что означает динамический?
    • 559 Как работает тип dynamic?
      • 561 Замечательная унификация
      • 562 Места вызовов
      • 564 Объекты со специальным динамическим поведением
      • 566 Эффективность
      • 567 Упаковка с помощью типа dynamic
    • 568 Динамические преобразования
      • 569 Неявные преобразования динамических выражений
    • 570 Динамическое разрешение перегрузки
    • 572 Динамическое наследование
      • 572 Нельзя наследовать от dynamic
      • 573 Нельзя реализовывать интерфейсы dynamic
      • 575 Возможность наследования от динамических базовых типов
    • 576 Утиная типизация в C#
    • 579 Ограничения динамических типов
    • 579 Динамическое создание объектов с помощью ExpandoObject
    • 583 Резюме
  • 584 Предметный указатель

Инструкция как скачать книгу Трей Нэш: C# 2010. Ускоренный курс для профессионалов в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.
C# 2010. Ускоренный курс для профессионалов
Рейтинг книги:
0 голосов
1532

Поиск книг:




При поиске учитываются только слова, длина которых больше 3-х символов.

Статистика: