Здравствуйте, Воронков Василий Владимирович.
Статья (впрочем как и сам Ela) очень заинтересовала. Вот только...
Вы несколько "погорячились" с предложенным вариантом развития событий при описании "dangling else".
Рассматриваемый вами код:
if (isAdmin())
if (isAdvancedMode())
openAdvancedAdminConsole();
else
openAdminConsole();
на самом деле выполняется так:
if (isAdmin())
{
if (isAdvancedMode())
{ openAdvancedAdminConsole(); }
else
{ openAdminConsole(); }
}
а не так, как Вы написали в статье.
Это справедливо для C#, C++, C и ещё ряда языков.
Есть такое общепринятое правило (закреплённое стандартами C/C++/C#), что "else" относится к ближайшему "if".
Из легкодоступных источников можно проверить здесь
http://en.wikipedia.org/wiki/Dangling_else.
А ещё проще написать программу и посмотреть как она выполняется.
Очень надеюсь, что допущенная ошибка обусловлена только лишь спешкой написания статьи, а не чем-то другим.
С уважением,
Дмитрий.