Я думаю, что вы имеете в виду:
D code = new D(x.ToString);
Обратите внимание на отсутствие скобок. При включенных скобках это был метод invocation - т.е. вы пытались выполнить x.ToString()
в этой строке кода. Без скобок это группа методов - выражение, которое указывает компилятору взглянуть на доступные методы с этим именем (в этом контексте) именно для целей создания делегатов.
Какую книгу вы используете? Если в примерах, которые он показывает, действительно есть квадратные скобки, вы можете написать автору (или хотя бы проверить страницу с ошибками в книге). Если это C # в глубине, я пойду и заплачу в углу ...