Введение

Данная книга представляет собой сборник задач на знание платформы .NET и языка программирования C#. Дабы у читателя и автора не возникло недопонимания, сразу хочется сказать, чем не является эта книга:

  • Эта книга не является универсальным способом проверить ваше знание платформы .NET. Если вы легко прорешали все задачки, то это не значит, что вы замечательный .NET-программист. А если вы встретили много новых для себя вещей, то из этого вовсе не следует, что вы плохо знаете .NET.

  • Эта книга не является подборкой новых, ранее нигде не виданных задач. Многие примеры можно встретить в литературе, в вопросах на Stackoverflow, в программистских блогах. Просто потому, что они уже давно стали классическими.

  • Эта книга не является ориентированной на тех, кто уже считает себя Senior .NET Developer и хочет узнать много нового.

Так чем же тогда является эта книга? Задачник.NET — это попытка собрать в одном месте разные интересные практические задания на знание платформы. Скорее всего, наибольшую пользу извлекут для себя .NET-разработчики, которые ещё просто не сталкивались с теми или иными областями. Задачи разбиты на главы, так что можно читать не всё подряд, а только вопросы из тех областей, которые для вас представляют интерес. В этой книге вы не найдёте глубоко философских вопросов типа «Что такое класс?» или «Зачем нужен полиморфизм?». Большая часть заданий представляет собой фрагмент C#-кода, для которого необходимо определить результат работы. Каждый вопрос снабжён ответом с описанием того, отчего .NET ведёт себя именно так.

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

Задачник.NET распространяется в электронном виде, разработка ведётся на GitHub. Стоит также отметить, что на сегодняшний задачник далёк от финального варианта. Книга будет пополняться новыми задачами, а старые будут уточняться и совершенствоваться.

Технические детали

На сегодняшний день существует две популярные реализации платформы .NET: оригинальный Microsoft .NET Framework (далее — MS.NET) и Mono. Как известно, поведение некоторых фрагментов кода может измениться при смене реализации. Точно также, поведение может измениться при изменении версии CLR или архитектуры процессора. Если результат работы приведённого фрагмента кода зависит от окружения, то скорее всего в ответах будет дано объяснение: в каком окружении какой ответ получится почему. Однако, это не гарантируется. Если в одном из примеров вы получили ответ, отличный от данного в книге, то просьба связаться с автором, чтобы он исправил эту досадную недоработку.

Примеры кода во всех заданиях можно запускать из программы LINQPad (в режиме C# Statements или C# Program, в зависимости от наличия метода Main), если предварительно подключить следующие пространства имён (Query -> Query Properties -> Additional Namespace Imports):

System.Globalization
System.Runtime.InteropServices
System.Runtime.CompilerServices

Благодарности

Автор искренне благодарит главного редактора Ивана Пащенко за полезные обсуждения в ходе работы над книгой. Этот человек внёс и продолжает вносить множество конструктивных комментариев с новыми интересными вопросами и улучшением старых.

Автор выказывает признательность Екатерине Демидовой за любезно предоставленные иллюстрации.

Last updated