Невероятные приключения в коде
Перевод блога Эрика Липперта
Динамическое заражение, часть вторая
В прошлый раз мы обсуждали, как параметр «dynamic» стремится расшириться по программе подобно...
Date: 02/20/2013
Динамическое заражение, часть первая
Предположим, что вы эпидемиолог, моделирующий возможное распространение сильно заразной...
Date: 01/22/2013
Группа из одного метода
На этой неделе я реализовывал семантический анализ динамических выражений в проекте Roslyn, так что...
Date: 01/21/2013
C# – это строго типизированный или слабо типизированный язык?
Сегодняшний пост, как обычно будет представлен в виде диалога. C# – это строго типизированный или...
Date: 01/15/2013
Невычислимое
Мы можем рассматривать компьютерную программу, как устройство, которое берет на вход набор целых...
Date: 12/19/2012
Как убедиться, что вывод типов метода завершится?
Я все пропустил! Я подготовился к огромной волне анонсов по поводу выхода языка TypeScript, но...
Date: 12/03/2012
Доступен сентябрьский выпуск Roslyn CTP
Я рад сообщить, что выпустили третий ознакомительный выпуск («Community Technology Preview») проекта...
Date: 11/20/2012
Статический анализ оператора «is»
Прежде чем переходить к сегодняшнему невероятному приключению, я хотел бы поздравить всё...
Date: 11/09/2012
Загадка с оператором «is». Часть 2
Как я и говорил в прошлый раз, это загадка была довольно простой: мы получим такое поведение, если...
Date: 11/07/2012
Загадка с оператором «is». Часть 1
Возможно, что в программе с некоторой локальной переменной x: bool b = x is FooBar; во время...
Date: 11/06/2012
Не смешивайте out-параметры и LINQ
Я вернулся из ежегодного отпуска, проведенного в прекрасном месте на юго-западе Онтарио; прежде чем...
Date: 11/06/2012
Должен ли C# выдавать предупреждения на использование пустых ссылок
Как вы наверное знаете, компилятор языка C# анализирует константы для поиска недостижимого кода. В...
Date: 10/12/2012
Когда преобразование типов им не является?
Мне очень часто задают вопрос о логике преобразования типов в языке C#, что, в общем-то, не...
Date: 09/03/2012
Лучший совет, который мне когда-либо давали
Сейчас всего лишь небольшая ссылка: Прекраснейшие люди из InformIT (*) выпускают серию коротких...
Date: 08/28/2012
Глупая последовательность глупа
Сегодняшний пост как обычно будет представлен в виде диалога. Почему в некоторых случаях...
Date: 08/28/2012
Эрик снова рассуждает о языке C#
Рейчел Румелиотис (Rachel Roumeliotis), которая, помимо прочего является редактором книг о C# в...
Date: 08/27/2012
Поведение, определяемое реализацией
Как я уже неоднократно упоминал в этом блоге ранее, язык C# был тщательно спроектирован таким...
Date: 08/27/2012
Персистентность, фасады и красно-зеленые деревья в Roslyn
На ранних стадиях дизайна проекта Roslyn мы решили, что основной структурой данной, с которой будут...
Date: 08/26/2012
Анонсируем Microsoft Roslyn June 2012 CTP
Внимание всем, я рад сообщить, что мы выпускаем вторую предварительную версию проекта Roslyn,...
Date: 08/24/2012
Прошлая эффективность не гарантирует будущих результатов
Прежде чем перейти к сути нашего сегодняшнего повествования, несколько замечаний. Во-первых, я...
Date: 08/24/2012
Руководство по GUID. Часть 3
Давайте напомним, о чем шла речь: GUID – это 128-разрядное целое, который используется в качестве...
Date: 08/06/2012
Руководство по GUID. Часть 2
Так каким же образом, GUID гарантированно является уникальным без централизованного контролирующего...
Date: 07/31/2012
Руководство по GUID. Часть 1
Что такое GUID? Данный акроним расшифровывается как «globally unique identifier» (глобально...
Date: 07/31/2012
null – это не false. Часть 3
Возвращаемся к теме нашего обсуждения: мы бы хотели позволить пользователям «перегружать» операторы...
Date: 06/09/2012
Небольшое отступление
Прежде чем мы продолжим наши изыскания, небольшое отступление. В прошлый раз я упомянул о...
Date: 06/08/2012
null – это не false. Часть 2
В замечательной книге Реймонда Смаллиана про остров рыцарей и лжецов, на котором, как вы помните,...
Date: 06/05/2012
null – это не false
В языке C# «null» используется для указания «отсутствия» значения или «некорректного» значения....
Date: 03/30/2012
Почему ограничения не выводятся автоматически?
Предположим, у вас есть базовый обобщенный тип с ограничением: class Bravo<T> where T :...
Date: 03/13/2012
Почему локальные переменные в недостижимом коде полностью определены?
Вы, скорее всего, знакомы с возможностью языка C#, которая запрещает чтение локальной переменной до...
Date: 03/12/2012
Доступна бета-версия языка C# 5.0
Я невероятно рад сообщить, что бета-версия Visual Studio версии 11 (которая включает .NET CLR версии...
Date: 03/12/2012
Решение простой задачи
При первом запуске моего визуализатора гистограмм я попробовал построить распределение Коши с...
Date: 03/12/2012
Простая задача
Моя исходная версия функции получения гистограмм, приведенная в предыдущей заметке, содержала...
Date: 03/11/2012
Генерация случайных чисел с неравномерным распределением в C#
При создании симуляторов событий реального мира, или при генерации тестовых выборок для алгоритмов,...
Date: 03/11/2012
Плохие метафоры
Стандартным способом обучения молодых программистов объектно-ориентированному программированию...
Date: 03/06/2012
Что такое «связывание» и что делает его поздним?
«Позднее связывание» – это один из таких же терминов компьютерных наук, что «строгая типизация»,...
Date: 03/04/2012
В чем разница? Тренчкот vs пыльник
Сегодня будет еще один эпизод из моей постоянной рубрики «В чем разница?». На этот раз...
Date: 03/04/2012
Использование общих анонимных типов в одной сборке. Часть 2
В прошлый раз я писал о том, что использование в одной сборке в разных местах «одинакового»...
Date: 03/03/2012
Использование общих анонимных типов в одной сборке. Часть 1
В одной из моих заметок 2010-го года я сказал, что приведу в следующем году пример использования в...
Date: 03/02/2012
Каково определяющее свойство локальной переменной?
Если вы спросите у десяти C#-программистов о том, что такое «локальная переменная», то вы получите...
Date: 03/02/2012
Любое изменение открытого интерфейса является критическим
Неприятная правда заключается в том, что любое изменение открытого интерфейса потенциально является...
Date: 03/01/2012
Такой мечтатель
Я заметил, что у этого блога и у фотоблога программиста Раяна Гослина (Ryan Goslin) есть как минимум...
Date: 03/01/2012
Построение теней на C#. Часть 6
Прекрасно, давайте, наконец, завершим эту серию. У нас есть алгоритм, который вычисляет, какие...
Date: 03/01/2012
Построение теней на C#. Часть 5
Итак, мы нашли верхнюю и нижнюю ячейки в заданном фрагменте столбца, ограниченном верхним и нижнем...
Date: 02/28/2012
Построение теней на C#. Часть 4
В прошлый раз мы увидели, сколькими разными способами можно неверно вычислить верхнюю ячейку,...
Date: 02/26/2012
Построение теней на C#. Часть 3
Прежде чем мы начнем, хочу поблагодарить всех за замечательные коментарии к предыдущим двум постам....
Date: 02/26/2012
Построение теней на C#. Часть 2
Я надеюсь, что основная идея алгоритма построения теней теперь ясна. Давайте приступим к его...
Date: 02/16/2012
Построение теней на C#. Часть 1
Мне всегда нравились игры вроде «rogue» («бродяга»); возможно вы тоже играли в некоторые из них. В...
Date: 02/06/2012
Люди, похожие на мошенников
Сегодня не будет технологий. Вместо этого несколько советов. Я не знаю, есть ли какие-то связи между...
Date: 02/01/2012
Так много интерфейсов, часть 2
В статье за апрель 2011 года о реализации интерфейсов я упомянул о том, что язык C# поддерживает...
Date: 01/09/2012
В чем разница между получением остатка от деления и взятия модуля?
Сегодня мы продолжим мою постоянную рубрику «В чем разница?» и рассмотрим разницу между получением...
Date: 01/04/2012