Есть ли какая-либо конкретная причина? Разве это не возможно вообще, или разве это еще просто не реализовано? Возможно, существуют какие-либо сторонние дополнения, которые позволяют оценки лямбды?
ОБНОВЛЕНИЕ:
Я нашел этот проект на codeplex Расширенным Непосредственным Окном. Кажется, что от этого отказывались в течение некоторого времени, но это может быть подтверждением концепции. Кто-либо знает какие-либо другие непосредственные дополнения расширения окна? Те, которые могут выполнить for/foreach операторы в C#, например?
ДжаредПар из Microsoft написал пару сообщений в блоге, отвечая на ваш вопрос: часть 1 и часть 2 . Вы найдете там ответы.
При написании лямбда-выражения процесс захвата переменных значительно изменяет конструкцию базового кода (перемещение переменных в поля классов, сгенерированных компилятором, которые очень легко сами могут быть сцепленные контексты замыкания).
Даже не учитывая общую сложность выполнения этого, тогда у него будет два варианта:
Имея выбор между «нежелательным» и «невозможным», я полагаю , они просто предпочли не реализовывать функцию, которая по своей природе была бы хрупкой. , и очень сложно написать.
Я думаю, это потому, что непосредственное окно может только оценивать выражения, или, скорее, оно может только выполнять вызовы и присваивания. Чтобы оценить лямбда-выражение, для этого лямбда необходимо создать замыкание, проверить его тип и затем выполнить.
Я думаю, что все сводится к тому, что окно Immediate - это просто средство оценки, а не интерпретатор.
http://msdn.microsoft.com/en-us/library/f177hahy (VS.80) .aspx
«Непосредственное окно используется во время разработки для отладки и оценки выражений, выполнения операторов, переменных для печати. значения и т. д. Он позволяет вам вводить выражения, которые будут оцениваться или выполняться языком разработки во время отладки »
. По сути, ваш вопрос сводится к тому, почему вы не можете определять функции в непосредственном окне (поскольку лямбды - это просто анонимные функции), и ответ, я думаю, заключается в том, что он просто не предназначен для этого.
Я предполагаю, что поскольку это ленивая оценка, непосредственное окно не может знать заранее, какие значения должны иметь захваченные переменные (закрытие).