C # - Невозможно вызвать делегат действия - PullRequest
0 голосов
/ 27 сентября 2018

Я не могу вызвать делегата при передаче анонимной функции.

Вот код.

public class MethodCollection
{ 
    public static void Print(Action<int, int> printNumbers)
    {

    }
}

public class Program
{
    static void Main(string[] args)
    {
        MethodCollection.Print((p, q) => { p = q = 3; Console.WriteLine(p + q); });
        Console.ReadLine();

    }
}

Вывод пустой экран.Программа не печатает ожидаемый вывод, т.е. 6.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Или это может быть что-то вроде этого ... и я думаю, что вы должны сначала ознакомиться с основами делегатов

полезная ссылка для изучения основ делегатов

public class MethodCollection
        {
            public static void Print(Action<int, int> printNumbers)
            {
                printNumbers.Invoke(0,0);
            }
        }

        public class Program
        {
            static void Main(string[] args)
            {
                MethodCollection.Print((p, q) => { Console.WriteLine((p=3) + (q=3)); });
                Console.ReadLine();

            }
        }
0 голосов
/ 27 сентября 2018

Просто вызовите printNumbers.Invoke(3,3); или около того в вашем методе Print.

Вы должны удалить p = q = 3; в вашем действии, потому что, как упоминал Джон, это заставит ваше действие игнорировать числа, которые вы пропустили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...