Явное указание типов лямбда-параметров - PullRequest
0 голосов
/ 22 сентября 2018

У меня небольшая проблема с лямбда-выражениями.Я не понимаю этот пример из C # В двух словах.Как я могу использовать забавные аргументы?Вы можете мне это объяснить или привести другие примеры?Буду очень признателен.

Вот код:

using System;

public class Program
{
    static void Main()
    {
        Bar((int x) => Foo(x));
    }

    static void Foo<T>(T x)
    {
        Console.WriteLine(x);
    }

    static void Bar<T>(Action<T> fun)
    {
        fun(5);     // Error: Cannot convert from int to T
    }
}

1 Ответ

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

Что, если T кошка, как вы собираетесь преобразовать число 5 в кошку?Это не имеет никакого смысла

Что-то, что немного легче обдумать, может быть:

static void Main()
{
    Bar(5, x => Foo(x));
    Bar("Bob", x => Foo(x));
}

static void Foo<T>(T x)
{
    Console.WriteLine(x);
}

static void Bar<T>(T somethingTangible, Action<T> fun)
{
    fun(somethingTangible); 
}

Ouput

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