Задать вопрос
@Dudder

Что не так с лямбда выражениями которые не возвращают четное число?

static void TraditionalDelegateSyntax()
        {
            List<int> list = new List<int>();
            list.AddRange(new int[] { 20, 1, 4, 8, 9, 44 });
            Predicate<int> callback = IsEvenNumber;
            List<int> evenNumbers = list.FindAll(callback);
            Console.WriteLine("Here are your even numbers:");
            foreach (int evenNumber in evenNumbers) { Console.Write($"{evenNumber}\t"); }
            Console.WriteLine();
        }
        static void AnonymousMethodSyntax()
        {
            List<int> list = new List<int>();
            list.AddRange(new int[] { 20, 1, 4, 8, 9, 44 });
            List<int> evenNumbers = list.FindAll(delegate (int i) { return (i & 2) == 0; });
            foreach (int evenNumber in evenNumbers)
            {
                Console.WriteLine(evenNumber);
            }
        }
        static void LambdaExpressionSyntax()
        {
            List<int> list = new List<int>();
            list.AddRange(new int[] { 20, 1, 4, 8, 9, 44 });
            List<int> evenNumbers = list.FindAll((i) =>
            {
                Console.WriteLine($"value of i is currently: {i}");
                bool isEven = ((i & 2) == 0);
                return isEven;
            });
            Console.WriteLine("Here are your even numbers:");
            foreach(int evenNumber in evenNumbers)
            {
                Console.WriteLine($"{evenNumber}\t");
            }
            Console.WriteLine();
        }
        static bool IsEvenNumber(int i) { return i % 2 == 0; }

В методе Main вызвал все три метода, но только первый дал верный результат(20, 4, 8, 44). Остальные два вернули список без изменений.
  • Вопрос задан
  • 57 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Решения вопроса 1
@ChessMax
Должно быть i % 2 а не i & 2.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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