Создание делегата вводит в методе

&& иногда называют оператором guard .

variable = indicator && value

его можно использовать, чтобы установить значение, только если индикатор правдоподобен.

19
задан Nikola Stjelja 11 December 2008 в 13:22
поделиться

2 ответа

Почему Вы хотите создать тип делегата в рамках метода? Что случилось с объявлением его вне метода? В основном Вы не можете сделать этого - Вы не можете объявить тип (никакой вид типа) в рамках метода.

Одна альтернатива должна была бы объявить всех универсальных делегатов Func/Action, которые присутствуют в.NET 3.5 - затем Вы могли просто сделать:

public void MyMethod(){
    Func<int, int, int> mySumImplementation = 
        delegate (int a, int b) { return a+b; };

    Console.WriteLine(mySumImplementation(1,1).ToString());
}

объявления находятся на моем страница .

C#/.NET Versions
23
ответ дан 30 November 2019 в 02:56
поделиться

Делегат тип должен быть определен вне функции. Фактический делегат может быть создан в методе, как Вы делаете.

class MyClass {
  delegate int Sum(int a, int b);
  public void MyMethod(){

       Sum mySumImplementation=delegate (int a, int b) {return a+b;}

       Console.WriteLine(mySumImplementation(1,1).ToString());
  }

}

было бы допустимо. Лучшее решение может состоять в том, чтобы эмулировать.NET3.5 и создать некоторые универсальные типы делегата глобально, которые могут использоваться на всем протяжении Вашего решения, чтобы избегать необходимости постоянно повторно объявлять типы делегата для всего:

delegate R Func<R>();
delegate R Func<T, R>(T t);
delegate R Func<T0, T1, R>(T0 t0, T1 t1);
delegate R Func<T0, T1, T2, R>(T0 t0, T1 t1, T2 t2);

Затем можно просто использовать Func<int, int, int> делегат в коде выше.

16
ответ дан 30 November 2019 в 02:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: