Hoe voeg ik een string toe aan een string[] array? Er is geen .Add functie

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

Ik'zou graag de FI.Name omzetten naar een string en deze dan toevoegen aan mijn array. Hoe kan ik dit doen?

Oplossing

Je kunt'geen items toevoegen aan een array, omdat die een vaste lengte heeft, wat je'zoekt is een List, die later met list.ToArray() in een array veranderd kan worden.

Commentaren (2)

Gebruik List van System.Collections.Generic

List myCollection = new List();

…

myCollection.Add(aString);

Of, shorthand (met behulp van collectie initialiser):

List myCollection = new List {aString, bString}

Als je echt een array aan het eind wilt, gebruik dan

myCollection.ToArray();

Je kan misschien beter abstraheren naar een interface, zoals IEnumerable, en dan gewoon de collectie teruggeven.

Edit: Als je een array moet gebruiken, kan je die prealloceren tot de juiste grootte (d.w.z. het aantal FileInfo dat je hebt). Dan, in de foreach loop, een teller bijhouden voor de array index die je als volgende moet updaten.

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;
}
Commentaren (2)
string[] coleccion = Directory.GetFiles(inputPath)
    .Select(x => new FileInfo(x).Name)
    .ToArray();
Commentaren (0)