Лично я предпочитаю свои собственные языковые расширения, которые я добавляю или удаляю по желанию для быстрого создания прототипов.
Ниже приведен пример для строк.
//resides in IEnumerableStringExtensions.cs
public static class IEnumerableStringExtensions
{
public static IEnumerable<string> Append(this string[] arrayInitial, string[] arrayToAppend)
{
string[] ret = new string[arrayInitial.Length + arrayToAppend.Length];
arrayInitial.CopyTo(ret, 0);
arrayToAppend.CopyTo(ret, arrayInitial.Length);
return ret;
}
}
Это намного быстрее, чем LINQ и Concat. Еще быстрее, используется пользовательская IEnumerable
Type-оболочка, которая хранит ссылки / указатели переданных массивов и позволяет циклически перемещаться по всей коллекции, как если бы это был обычный массив. (Полезно в HPC, Обработка графики, Визуализация графики ...)
Ваш код:
var someStringArray = new[]{"a", "b", "c"};
var someStringArray2 = new[]{"d", "e", "f"};
someStringArray.Append(someStringArray2 ); //contains a,b,c,d,e,f
Полный код и универсальная версия см .: https://gist.github.com/lsauer/7919764
Примечание: Возвращает нерасширенный объект IEnumerable. Возвращать расширенный объект немного медленнее.
Я скомпилировал такие расширения с 2002 года, и многие из них были полезны людям, работающим с CodeProject и Stackoverflow. Я скоро выпущу их и выложу здесь ссылку.