Persönlich bevorzuge ich meine eigenen Spracherweiterungen, die ich für Rapid Prototyping nach Belieben hinzufüge oder entferne.
Das Folgende ist ein Beispiel für Zeichenfolgen.
//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;
}
}
Es ist viel schneller als LINQ und Concat. Noch schneller wird ein benutzerdefinierter IEnumerableType-Wrapper verwendet, der Referenzen / Zeiger von übergebenen Arrays speichert und das Durchlaufen der gesamten Sammlung ermöglicht, als wäre es ein normales Array. (Nützlich in HPC, Grafikverarbeitung, Grafik-Rendering ...)
Dein Code:
var someStringArray = new[]{"a", "b", "c"};
var someStringArray2 = new[]{"d", "e", "f"};
someStringArray.Append(someStringArray2 ); //contains a,b,c,d,e,f
Den gesamten Code und eine generische Version finden Sie unter: https://gist.github.com/lsauer/7919764
Hinweis: Dies gibt ein nicht erweitertes IEnumerable-Objekt zurück. Das Zurückgeben eines erweiterten Objekts ist etwas langsamer.
Ich habe solche Erweiterungen seit 2002 zusammengestellt, wobei viele Credits an hilfreiche Leute in CodeProject und 'Stackoverflow' gingen. Ich werde diese in Kürze veröffentlichen und den Link hier einfügen.