Нет, вы не можете использовать лямбда-выражения в окне просмотра / локальных / непосредственных сообщений. Как отметил Марк, это невероятно сложно. Я хотел погрузиться немного дальше в тему, хотя.
То, что большинство людей не учитывают при выполнении анонимной функции в отладчике, это то, что она не возникает в вакууме. Сам процесс определения и запуска анонимной функции меняет основную структуру базы кода. Изменение кода, в целом и, в частности, из непосредственного окна, является очень сложной задачей.
Рассмотрим следующий код.
void Example() {
var v1 = 42;
var v2 = 56;
Func<int> func1 = () => v1;
System.Diagnostics.Debugger.Break();
var v3 = v1 + v2;
}
Этот конкретный код создает одно замыкание для захвата значения v1. Захват закрытия требуется всякий раз, когда анонимная функция использует переменную, объявленную вне ее области видимости. Для всех намерений и целей v1 больше не существует в этой функции. Последняя строка на самом деле больше похожа на следующую
var v3 = closure1.v1 + v2;
Если в примере отладчика запущена функция Example, она остановится на линии разрыва. Теперь представьте, что пользователь набрал следующее в окне просмотра
(Func<int>)(() => v2);
Чтобы правильно выполнить это, отладчику (или, более подходящему, EE) потребуется создать замыкание для переменной v2. Это сложно, но не невозможно сделать.
Что действительно делает эту тяжелую работу для EE, так это последняя строка. Как теперь должна выполняться эта строка? Для всех целей анонимная функция удалила переменную v2 и заменила ее на closure2.v2. Таким образом, последняя строка кода действительно должна читаться как
var v3 = closure1.v1 + closure2.v2;
Тем не менее, чтобы фактически получить этот эффект в коде, требуется, чтобы EE изменило последнюю строку кода, которая фактически является действием ENC. Хотя этот конкретный пример возможен, большая часть сценариев не возможна.
Что еще хуже, выполнение лямбда-выражения не должно создавать новое замыкание. На самом деле это должно быть добавление данных к исходному закрытию. В этот момент вы попадаете прямо в ограничения ENC.
Мой маленький пример, к сожалению, только царапает поверхность проблем, с которыми мы сталкиваемся. Я продолжаю говорить, что напишу полный пост в блоге на эту тему и, надеюсь, у меня будет время на этих выходных.