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;
}
Chciałbym przekonwertować FI.Name
ciąg na, a następnie dodać go do mojej tablicy. W jaki sposób mogę to zrobić?
c#
arrays
long-filenames
Sergio Tapia
źródło
źródło
Alternatywnie możesz zmienić rozmiar tablicy.
źródło
Array.Resize
to właściwy sposób zmiany rozmiaru tablicy. Jeśli dodasz komentarz przed fragmentem kodu, mówiąc, że rzadko jest to najlepszy sposób radzenia sobie z sytuacjami, w których tablica reprezentuje kolekcję o zmiennym rozmiarze, masz +1. :)Użyj List <T> z System.Collections.Generic
Lub stenografia (przy użyciu inicjatora kolekcji):
Jeśli naprawdę chcesz tablicy na końcu, użyj
Lepiej wyodrębnij interfejs, taki jak IEnumerable, niż zwróć kolekcję.
Edycja: Jeśli musisz użyć tablicy, możesz wstępnie przydzielić ją do odpowiedniego rozmiaru (tj. Liczby posiadanych FileInfo). Następnie w pętli foreach utrzymuj licznik indeksu tablicy, który musisz zaktualizować w następnej kolejności.
źródło
łatwy
źródło
Add
nieadd
.Jeśli się nie mylę, to:
źródło
Oto jak dodaję ciąg, gdy jest to potrzebne:
źródło
źródło
Dlaczego nie użyjesz pętli for zamiast użycia foreach. W tym scenariuszu nie ma możliwości uzyskania indeksu bieżącej iteracji pętli foreach.
Nazwę pliku można dodać do ciągu [] w ten sposób,
źródło
listaDeArchivos
. Jeśli tego nie zrobisz (tj. Jeśli to się kiedykolwiek zmieni i byłoby skomplikowane, aby zliczyć z wyprzedzeniem, ponieważ twoje obiekty są modelami zagnieżdżonymi lub polami modelu, które mogą / mogą nie być wypełnione, na przykład) i po prostu chcesz to zrobićstring[] Coleccion;
następnie przypisz to takint idx = 0; Coleccion[idx] = fileName; idx++;
, to ci powieUse of unassigned local variable 'Coleccion'
. Tylko do Twojej wiadomości dla każdego, kto chce to dostosować, aby był bardziej dynamiczny, że istnieje pułapka.Ten kod świetnie nadaje się do przygotowywania wartości dynamicznych Array for spinner w Androidzie:
źródło
aby wyczyścić tablicę i jednocześnie ustawić liczbę jej elementów = 0, użyj tego ..
źródło
W tym przypadku nie użyłbym tablicy. Zamiast tego użyłbym StringCollection.
źródło
źródło
Dodając referencję do Linq
using System.Linq;
i użyj dostarczonej metody rozszerzeniaAppend
:public static IEnumerable<TSource> Append<TSource>(this IEnumerable<TSource> source, TSource element)
Następnie musisz przekonwertować ją z powrotemstring[]
na.ToArray()
metodę.Jest to możliwe, ponieważ typ
string[]
narzędziIEnumerable
, realizuje również następujące interfejsy:IEnumerable<char>
,IEnumerable
,IComparable
,IComparable<String>
,IConvertible
,IEquatable<String>
,ICloneable
źródło