Osobiście wolę własne rozszerzenia językowe, które dodam lub usunę do woli w celu szybkiego prototypowania.
Poniżej znajduje się przykład ciągów.
//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;
}
}
Jest znacznie szybszy niż LINQ i Concat. Jeszcze szybciej korzysta z niestandardowego IEnumerableopakowania typu, które przechowuje referencje / wskaźniki przekazanych tablic i umożliwia zapętlanie całej kolekcji, jak gdyby była to normalna tablica. (Przydatne w HPC, przetwarzaniu grafiki, renderowaniu grafiki ...)
Twój kod:
var someStringArray = new[]{"a", "b", "c"};
var someStringArray2 = new[]{"d", "e", "f"};
someStringArray.Append(someStringArray2 ); //contains a,b,c,d,e,f
Cały kod i ogólna wersja patrz: https://gist.github.com/lsauer/7919764
Uwaga: Zwraca nierozszerzony obiekt IEnumerable. Zwrócenie rozszerzonego obiektu jest nieco wolniejsze.
Kompilowałem takie rozszerzenia od 2002 roku, a wiele kredytów trafiło do pomocnych osób na CodeProject i „Stackoverflow”. Niedługo je wypuszczę i zamieszczę link tutaj.