Πώς να προσθέσετε μια συμβολοσειρά σε έναν πίνακα string[]; Δεν υπάρχει η συνάρτηση .Add

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

Θα ήθελα να μετατρέψω το FI.Name σε συμβολοσειρά και στη συνέχεια να το προσθέσω στον πίνακα μου. Πώς μπορώ να το κάνω αυτό;

Λύση

Δεν μπορείτε να προσθέσετε στοιχεία σε έναν πίνακα, αφού έχει σταθερό μήκος, αυτό που ψάχνετε είναι μια List, η οποία μπορεί αργότερα να μετατραπεί σε πίνακα χρησιμοποιώντας την list.ToArray().

Σχόλια (2)

Χρήση List από System.Collections.Generic

List myCollection = new List();

…

myCollection.Add(aString);

Ή, εν συντομία (χρησιμοποιώντας αρχικοποιητή συλλογής):

List myCollection = new List {aString, bString}

Αν θέλετε πραγματικά έναν πίνακα στο τέλος, χρησιμοποιήστε

myCollection.ToArray();

Ίσως είναι καλύτερα να κάνετε αφαίρεση σε μια διασύνδεση, όπως η IEnumerable, και στη συνέχεια να επιστρέφετε απλώς τη συλλογή.

Επεξεργασία: Αν πρέπει να χρησιμοποιήσετε έναν πίνακα, μπορείτε να τον προ-διαθέσετε στο σωστό μέγεθος (δηλαδή στον αριθμό των FileInfo που έχετε). Στη συνέχεια, στο βρόχο foreach, διατηρήστε έναν μετρητή για τον δείκτη του πίνακα που πρέπει να ενημερώσετε στη συνέχεια.

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