должен выбрать компилятор? Точно такая же проблема происходит с вашим примером использования

вая этот код:

class C
{
    C()
    {
        Test<string>(A); // fine
        Test((string a) => {}); // fine
        Test((Action<string>)A); // fine

        Test(A); // type arguments cannot be inferred from usage!
    }

    static void Test<T>(Action<T> a) { }

    void A(string _) { }
}

Компилятор жалуется, чтоTest(A) не могу понятьT бытьstring.

Мне кажется, что это довольно простой случай, и я клянусь, что полагался на гораздо более сложный вывод в других написанных мной универсальных утилитах и ​​функциях расширения. Что мне здесь не хватает?

Обновление 1: это в компиляторе C # 4.0. Я обнаружил эту проблему в VS2010, и приведенный выше пример взят из самого простого примера, который я сделал в LINQPad 4.

Обновление 2: добавлено еще несколько примеров в список того, что работает.

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

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