Мне нужно добавить несколько методов в список вызовов делегата. Однако у всех из них есть логика принятия решений, связанная с ними. Таким образом, есть блок if, прежде чем метод будет привязан к списку вызовов делегата. Могу ли я это сделать без создания экземпляра делегата. Фрагмент кода выглядит следующим образом:Как добавить методы в список вызовов делегата без создания экземпляра делегата?
public delegate void SomeDelegate();
static void Method1() {}
static void Method2() {}
static void AddMethodsToInvocationList()
{
SomeDelegate someDelegate = new SomeDelegate();
if (someLogic1) someDelegate += Method1;
if (someLogic2) someDelegate += Method2;
}
В принципе, я хочу, чтобы иметь возможность создать экземпляр делегата без прохождения каких-либо методов в качестве параметров. Однако я получаю ошибку компилятора с ошибкой «не содержит конструктор, который принимает 0 аргументов», если я пытаюсь создать экземпляр делегата, не передавая какие-либо методы в качестве параметров.
Я также был бы открыт для решения этой проблемы по-другому, если у кого-то есть лучший способ сделать это. Однако делегаты должны использоваться.
Благодарим за помощь. Очень признателен.
Передача null дает мне «ожидаемое имя метода» компилятором красных squiggly. –
@SaikatDas Вы можете назначить 'null' любой переменной делегата в каждой версии языка. Вы, по-видимому, фактически не присваивали переменную «null», а вместо этого делали что-то еще. – Servy
Да, это решает мою проблему. Я передал значение null в инициализатор. Однако то, что вы имели в виду, присваивало значение null объявляемой переменной. Спасибо. –