Перегрузка, универсальный вывод типа и 'params' ключевое слово

Подобный удобный для затмения gdb frontend является emacs frontend, плотно связанный с emacs IDE. Если Вы уже будете работать с emacs, Вам понравится он:

GDB Emacs Frontend

5
задан Thomas Levesque 30 November 2009 в 15:58
поделиться

1 ответ

Раздел 7.4.3 C # 3. Спецификация 0 является здесь соответствующим битом. В основном массив параметров расширен, поэтому вы сравниваете:

public static void DoSomething<T>(T item)

и

public static void DoSomething<T>(IEnumerable<T> item)

T для первого совпадения выводится как List и ] T для второго совпадения предполагается как строка .

Теперь рассмотрим преобразования, используемые для аргумента в тип параметра - в первом случае это List в Список <строка> ; во втором - от List до IEnumerable . Первое преобразование лучше второго по правилам, приведенным в п. 7.4.3.4.

Противоинтуитивным битом является вывод типа. Если вы уберете это из уравнения, оно будет работать так, как вы ожидаете:

var items = new List<string> { "foo", "bar" };
DoSomething<string>(items);
DoSomething<string>("foo", "bar");

В этот момент есть '

9
ответ дан 14 December 2019 в 01:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: