Странное поведение с использованием делегатов и лямбд

В качестве средства представления оценки ленивого форматирования в библиотеке, которую я разрабатываю, я определил делегатов

public delegate string MessageFormatterDelegate(string message, params object[] arguments);
public delegate string MessageFormatterCallback(MessageFormatterDelegate formatterDelegate);

и что-то вроде следующего класса

public static class TestClass
{
    public static string Evaluate(MessageFormatterCallback formatterCallback)
    {
        return (formatterCallback(String.Format));
    }
}

Тем не менее, это ведет себя достаточно странно: при запуске свнешний проект, заявление

Console.WriteLine(TestClass.Evaluate(message => message("{0},{1},{2}", 1, 2, 3)));

делаетне компилировать, потерпев неудачу с ошибкой

Error   1   Delegate 'MessageFormatterDelegate' does not take 4 arguments

пока

Console.WriteLine(TestClass.Evaluate((MessageFormatterDelegate message) => message("{0},{1},{2}", 1, 2, 3)));

компилирует и работает без проблем, печать1,2,3 в консоли. Почему я должен квалифицироватьmessage спор сMessageFormatterDelegate введите второе лямбда-выражение? Есть ли способ обойти это поведение?

Ответы на вопрос(2)

Ваш ответ на вопрос