Concat
- метод LINQ. Это означает, что это запрос. Он не создает список или какой-либо другой вид коллекции, а последовательность.
Так что же Concat
на самом деле это объединение двух исходных последовательностей. Когда вы повторяете результат Concat
, вы сначала итерации через первую последовательность, а затем через вторую последовательность. Таким образом, последовательность не изменяется.
Так что, да
деталь будет int
не float
после Concat на каждом использовании
MSDN от ничего не говорит о порядке элементов
Ну это does say
Конкатенации двух последовательностей.
И to concatenate
означает поставить одну после другой, чтобы не перепутать их.
Из reference source:
public static IEnumerable<TSource> Concat<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second) {
if (first == null) throw Error.ArgumentNull("first");
if (second == null) throw Error.ArgumentNull("second");
return ConcatIterator<TSource>(first, second);
}
static IEnumerable<TSource> ConcatIterator<TSource>(IEnumerable<TSource> first, IEnumerable<TSource> second) {
foreach (TSource element in first) yield return element;
foreach (TSource element in second) yield return element;
}
Таким образом, вы видите два последовательных foreach
будет первый выход элементов первой последовательности, то элемент второй последовательности.