2012-04-20 3 views
0

При вызове методов с сигнатурой, которая имеет делегат, используя синтаксис lamba, Visual Studio 2008 заменяет мои произвольные имена параметров автозаполненными именами.Параметры Lambda и автозаполнение Visual Studio 2008

private void parseIntCell(DataGridViewCell focusCell, Action<Receipt_Detail, int> recorder) 

Как я печатаю следующее:

parseDecimalCell(focusCell, 2, ((x, 

Как только я набираю запятая, Visual Studio превращает его в

parseDecimalCell(focusCell, 2, ((XmlReadMode, 

То, что я хотел, чтобы в конечном счете типа

parseDecimalCell(focusCell, 2, ((x,y) => x.Grower_Box_Weight = y)); 

Есть ли способ конфигурировать мой код или Visual Studio, чтобы я мог вводить эти типы lambas, не нажимая esc, чтобы отменить автозаполнение, в то же время сохраняя автозаполнение для нормального кода?

ответ

1

Попробуйте нажать CTRL + Alt + Space вместе, это не отключит автозаполнение, но для того, чтобы автозаполнение вам нужно было выбрать из списка.

0

Вместо того, заключаете лямбда-выражение в скобках, можно заключить тело функции вашего Lambda в фигурных скобках, например:

private void doSomethingWithADelegate(Action<int, int> myFunc) 
{ 
    // ... 
} 

void Foo() 
{ 
    int a = 0; 
    doSomethingWithADelegate((x, y) => { a = a + x + y; }); 
} 

Когда я использую этот синтаксис, Intellisense не пытается делать какие-либо изменения после ввода "(x,".