Como adicionar uma string a uma matriz de string[]? There's no .Add function

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

I'gostaria de converter o FI.Name para uma string e depois adicioná-lo ao meu array. Como eu posso fazer isso?

Solução

Você pode't adicionar itens a um array, já que ele tem comprimento fixo, o que você're procura é um List, que mais tarde pode ser transformado em um array utilizando list.ToArray().

Comentários (2)

Use List de System.Collections.Generic

List myCollection = new List();

…

myCollection.Add(aString);

Ou, taquigrafia (usando o iniciador de recolha):

List myCollection = new List {aString, bString}

Se você realmente quer um array no final, use

myCollection.ToArray();

Talvez seja melhor você se abstrair para uma interface, como a IEnumerable, do que apenas devolver a coleção.

Edit: Se você necessário usar um array, você pode pré-alocá-lo no tamanho certo (ou seja, o número de FileInfo que você tem). Então, no loop foreach, mantenha um contador para o índice de array que você precisa atualizar a seguir.

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