Hvordan legge til en streng i en streng[]-array? Det er ingen .add-funksjon

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;
}

Jeg vil konvertere FI.Name til en streng og deretter legge den til i matrisen min. Hvordan kan jeg gjøre dette?

Løsning

Du kan ikke legge til elementer i en matrise, siden den har fast lengde, det du leter etter er en List, som senere kan gjøres om til en matrise ved hjelp av list.ToArray().

Kommentarer (2)

Bruk List fra System.Collections.Generic

List myCollection = new List();

…

myCollection.Add(aString);

Eller stenografi (ved bruk av samlingsinitialisator):

List myCollection = new List {aString, bString}

Hvis du virkelig vil ha en matrise på slutten, bruker du

myCollection.ToArray();

Det kan være bedre å abstrahere til et grensesnitt, for eksempel IEnumerable, og deretter bare returnere samlingen.

Rediger: Hvis du bruke en matrise, kan du forhåndsallokere den til riktig størrelse (dvs. antall FileInfo du har). Deretter, i foreach-sløyfen, opprettholder du en teller for matriseindeksen du trenger å oppdatere neste.

private string[] ColeccionDeCortes(string Path)
{
    DirectoryInfo X = new DirectoryInfo(Path);
    FileInfo[] listaDeArchivos = X.GetFiles();
    string[] Coleccion = new string[listaDeArchivos.Length];
    int i = 0;

    foreach (FileInfo FI in listaDeArchivos)
    {
        Coleccion[i++] = FI.Name;
        //Add the FI.Name to the Coleccion[] array, 
    }

    return Coleccion;
}
Kommentarer (2)
string[] coleccion = Directory.GetFiles(inputPath)
    .Select(x => new FileInfo(x).Name)
    .ToArray();
Kommentarer (0)