Место общения программистов C#
Anonymous
Не соответствует правильной перегрузке в C# [дубликат]
Сообщение
Anonymous » 19 янв 2025, 03:19
У меня есть следующая программа
Код: Выделить всё
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
class Program
{
public static string Foo(params T[] items)
{
return "A";
}
public static string Foo(IEnumerable items)
{
return "B";
}
static void Main()
{
List items = new List(){0,1,23};
Console.WriteLine(Foo(items));
Console.WriteLine(Foo("XXX"));
}
}
который выводит
а не
Учитывая, что List является подклассом IEnumerable, почему форма общих параметров ранее совпадает с компилятором и дает неожиданный ответ.
Подробнее здесь:
https://stackoverflow.com/questions/183 ... in-c-sharp
1737245959
Anonymous
У меня есть следующая программа [code]using System; using System.Collections.Generic; using System.IO; using System.Linq; class Program { public static string Foo(params T[] items) { return "A"; } public static string Foo(IEnumerable items) { return "B"; } static void Main() { List items = new List(){0,1,23}; Console.WriteLine(Foo(items)); Console.WriteLine(Foo("XXX")); } } [/code] который выводит [code]A A [/code] а не [code]B A [/code] Учитывая, что List является подклассом IEnumerable, почему форма общих параметров ранее совпадает с компилятором и дает неожиданный ответ. Подробнее здесь: [url]https://stackoverflow.com/questions/18334162/not-matching-the-correct-overload-in-c-sharp[/url]