Это меня сбило с толку, поэтому я подумал, что спрошу здесь в надежде, что гуру C # сможет мне это объяснить.
Почему это код генерирует ошибку?
class Program
{
static void Main(string[] args)
{
Foo(X); // the error is on this line
}
static String X() { return "Test"; }
static void Foo(Func<IEnumerable<String>> x) { }
static void Foo(Func<String> x) { }
}
Рассматриваемая ошибка:
Error
1
The call is ambiguous between the following methods or properties:
'ConsoleApplication1.Program.Foo(System.Func<System.Collections.Generic.IEnumerable<string>>)' and 'ConsoleApplication1.Program.Foo(System.Func<string>)'
C:\Users\mabster\AppData\Local\Temporary Projects\ConsoleApplication1\Program.cs
12
13
ConsoleApplication1
Не имеет значения, какой тип я использую - если вы замените объявления "String" на "int" в этом коде, вы получите такую же ошибку . Как будто компилятор не может отличить Func
от Func
.
Может кто-нибудь пролить свет на это?