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;
}
Ich möchte das FI.Name
in eine Zeichenfolge konvertieren und es dann meinem Array hinzufügen. Wie kann ich das machen?
c#
arrays
long-filenames
Sergio Tapia
quelle
quelle
Alternativ können Sie die Größe des Arrays ändern.
quelle
Array.Resize
ist der richtige Weg, um die Größe eines Arrays zu ändern. Wenn Sie vor dem Code-Snippet einen Kommentar hinzufügen, der besagt, dass dies selten der beste Weg ist, um Situationen zu behandeln, in denen das Array eine Sammlung mit veränderbarer Größe darstellt, haben Sie eine +1. :)Verwenden Sie List <T> aus System.Collections.Generic
Oder Kurzform (mit Sammlungsinitialisierer):
Wenn Sie am Ende wirklich ein Array möchten, verwenden Sie
Möglicherweise ist es besser, zu einer Schnittstelle wie IEnumerable zu abstrahieren, als nur die Sammlung zurückzugeben.
Edit: Wenn Sie müssen ein Array verwenden, können Sie es auf die richtige Größe preallocate (dh die Anzahl der Fileinfo Sie haben). Verwalten Sie dann in der foreach-Schleife einen Zähler für den Array-Index, den Sie als Nächstes aktualisieren müssen.
quelle
Eazy
quelle
Add
nichtadd
.Wenn ich mich nicht irre, ist es:
quelle
So füge ich bei Bedarf einen String hinzu:
quelle
quelle
Warum verwenden Sie nicht eine for-Schleife anstelle von foreach? In diesem Szenario können Sie den Index der aktuellen Iteration der foreach-Schleife nicht abrufen.
Der Name der Datei kann auf diese Weise zur Zeichenfolge [] hinzugefügt werden.
quelle
listaDeArchivos
sind. Wenn Sie dies nicht tun (dh wenn es sich jemals ändern könnte und es komplex wäre, eine Zählung im Voraus durchzuführen, da Ihre Objekte beispielsweise verschachtelte Modelle oder Modellfelder sind, die möglicherweise nicht gefüllt sind), und Sie dies einfach tun möchtenstring[] Coleccion;
dann ordne es wie zuint idx = 0; Coleccion[idx] = fileName; idx++;
, es wird dir sagenUse of unassigned local variable 'Coleccion'
. Nur zu Ihrer Information für alle, die dies anpassen möchten, um dynamischer zu sein, dass es eine Falle gibt.Dieser Code eignet sich hervorragend zum Vorbereiten des Arrays für dynamische Werte für Spinner in Android:
quelle
Verwenden Sie diese Option, um das Array zu löschen und gleichzeitig die Anzahl seiner Elemente auf 0 zu setzen.
quelle
Ich würde in diesem Fall kein Array verwenden. Stattdessen würde ich eine StringCollection verwenden.
quelle
quelle
Hinzufügen eines Verweises auf Linq
using System.Linq;
und Verwenden der bereitgestellten ErweiterungsmethodeAppend
:public static IEnumerable<TSource> Append<TSource>(this IEnumerable<TSource> source, TSource element)
Anschließend müssen Sie ihn wieder in diestring[]
Verwendung der.ToArray()
Methode konvertieren .Es ist möglich, weil die Art
string[]
implementiertIEnumerable
, ist es auch folgende Schnittstellen implementiert:IEnumerable<char>
,IEnumerable
,IComparable
,IComparable<String>
,IConvertible
,IEquatable<String>
,ICloneable
quelle