private string[] ColeccionDeCortes(string Path)
{
DirectoryInfo X = new DirectoryInfo(Path);
FileInfo[] listaDeArchivos = X.GetFiles();
string[] Coleccion;
foreach (FileInfo FI in listaDeArchivos)
{
//Add the FI.Name to the Coleccion[] array,
}
return Coleccion;
}
Me gustaría convertirlo FI.Name
en una cadena y luego agregarlo a mi matriz. ¿Cómo puedo hacer esto?
c#
arrays
long-filenames
Sergio Tapia
fuente
fuente
Alternativamente, puede cambiar el tamaño de la matriz.
fuente
Array.Resize
es la forma correcta de cambiar el tamaño de una matriz. Si agrega un comentario antes del fragmento de código que dice que rara vez es la mejor manera de manejar situaciones en las que la matriz representa una colección redimensionable, tiene un +1. :)Utilice la Lista <T> de System.Collections.Generic
O, taquigrafía (usando el inicializador de colección):
Si realmente quieres una matriz al final, usa
Puede que sea mejor abstraer a una interfaz, como IEnumerable, y luego simplemente devolver la colección.
Editar: si debe usar una matriz, puede preasignarla al tamaño correcto (es decir, el número de FileInfo que tiene). Luego, en el ciclo foreach, mantenga un contador para el índice de matriz que necesita actualizar a continuación.
fuente
Eazy
fuente
Add
noadd
.Si no me equivoco es:
fuente
Así es como agrego a una cadena cuando es necesario:
fuente
fuente
¿Por qué no usas un bucle for en lugar de usar foreach? En este escenario, no hay forma de obtener el índice de la iteración actual del bucle foreach.
El nombre del archivo se puede agregar a la cadena [] de esta manera,
fuente
listaDeArchivos
. Si no lo hace (es decir, si alguna vez podría cambiar y sería complejo hacer un recuento con anticipación porque sus objetos son modelos anidados o campos de modelos que pueden / pueden no rellenarse, por ejemplo) y solo desea hacerlostring[] Coleccion;
luego asignarlo comoint idx = 0; Coleccion[idx] = fileName; idx++;
, te lo diráUse of unassigned local variable 'Coleccion'
. Solo para tu información, para cualquiera que quiera adaptar esto para que sea más dinámico, hay una trampa.Este código funciona muy bien para preparar la matriz de valores dinámicos para spinner en Android:
fuente
para borrar la matriz y hacer que el número de sus elementos = 0 al mismo tiempo, use esto ...
fuente
No usaría una matriz en este caso. En cambio, usaría una StringCollection.
fuente
fuente
Agregar una referencia a Linq
using System.Linq;
y usar el método de extensión proporcionadoAppend
:public static IEnumerable<TSource> Append<TSource>(this IEnumerable<TSource> source, TSource element)
luego debe convertirlo nuevamente parastring[]
usar el.ToArray()
método.Es posible, porque el tipo de
string[]
implementosIEnumerable
, sino que también pone en práctica las siguientes interfaces:IEnumerable<char>
,IEnumerable
,IComparable
,IComparable<String>
,IConvertible
,IEquatable<String>
,ICloneable
fuente