Personalmente, preferisco le mie estensioni di lingua, che aggiungo o rimuovo a piacimento per la prototipazione rapida.
Di seguito è riportato un esempio di stringhe.
//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;
}
}
È molto più veloce di LINQ e Concat. Più velocemente, sta usando un IEnumerable
wrapper di tipo personalizzato che memorizza riferimenti / puntatori di array passati e consente di eseguire il ciclo su tutta la raccolta come se fosse un array normale. (Utile in HPC, elaborazione grafica, rendering grafico ...)
Il tuo codice:
var someStringArray = new[]{"a", "b", "c"};
var someStringArray2 = new[]{"d", "e", "f"};
someStringArray.Append(someStringArray2 ); //contains a,b,c,d,e,f
Per l'intero codice e una versione generica, consultare: https://gist.github.com/lsauer/7919764
Nota: restituisce un oggetto IEnumerable non esteso. Restituire un oggetto esteso è un po 'più lento.
Ho compilato tali estensioni dal 2002, con molti riconoscimenti rivolti a persone utili su CodeProject e 'Stackoverflow'. Rilascerò questi a breve e inserirò qui il link.