Personalmente, prefiero mis propias extensiones de idioma, que agrego o quito a voluntad para la creación rápida de prototipos.
A continuación se muestra un ejemplo de cadenas.
//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 mucho más rápido que LINQ y Concat. Más rápido aún, es el uso de un contenedor de tipo personalizado IEnumerable
que almacena referencias/punteros de matrices pasadas y permite el bucle sobre toda la colección como si fuera una matriz normal. (Útil en HPC, de procesamiento gráfico, gráficos hacen ...)
Su Código:
var someStringArray = new[]{"a", "b", "c"};
var someStringArray2 = new[]{"d", "e", "f"};
someStringArray.Append(someStringArray2); //contains a,b,c,d,e,f
Para todo el código y ver una versión genéricos: https://gist.github.com/lsauer/7919764
Nota: Este devuelve un objeto IEnumerable no extendido. Devolver un objeto extendido es un poco más lento.
Recopilé tales extensiones desde 2002, con un montón de créditos para personas útiles en CodeProject y 'Stackoverflow'. Los lanzaré en breve y pondré el enlace aquí.
¿Qué pasa con .NET 4.0, ¿hay noticias? – Shimmy
Tenga en cuenta que 'Array.Resize' en realidad no cambia el tamaño de la matriz, sino que la copia. Es por eso que el primer parámetro es by-ref (lo que significa que su primer código probablemente no compilará). – CodesInChaos
Me gustaría tirar tu primer pedazo de código. No ofrece una ventaja, y es más difícil de leer IMO. – CodesInChaos