The_Unknown_Member Ответов: 1

Почему эта лямбда не работает с делегатом?


В чем проблема со следующим кодом?
class Program
    {
        public delegate string ReturnAStringHandler(string s);

        static void Main(string[] args)
        {
            ReturnAStringHandler sh = ReturnAString;
            ReturnAStringHandler sh2 = () => sh("Hello"); 

            

        }

        public static string ReturnAString(string s)
        {
            return s;
        }
    }


Проблема находится на этой линии:
ReturnAStringHandler sh2 = () => sh("Hello");


Компилятор говорит: "делегат Program.ReturnAStringHandler не принимает 0 аргументов"



Правка: Ооооо. Это подпись... Извините за глупый вопрос........

Что я уже пробовал:

Я пытался понять, что именно происходит.

RickZeeland

Совсем не глупый вопрос, я все еще нахожу лямбды трудными для работы, но это, вероятно, потому, что я старый пердун, который не может привыкнуть к программированию в "новом стиле" :)

1 Ответов

Рейтинг:
0

OriginalGriff

Цитата:
Правка: Ооооо. Это подпись... Извините за глупый вопрос........

Это действительно так!

В интересах других людей с аналогичной проблемой, sh2 объявление требует параметра:
ReturnAStringHandler sh = ReturnAString;
ReturnAStringHandler sh2 = (x) => sh(x);

Console.WriteLine(sh2("Hello"));