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;
}
J'aimerais convertir le FI.Name
en une chaîne, puis l'ajouter à mon tableau. Comment puis-je faire ceci?
Vous ne pouvez pas ajouter d'éléments à un tableau, car il a une longueur fixe. Vous recherchez un List<string>
, qui peut être transformé en tableau par la suite à l'aide de list.ToArray()
.
Alternativement, vous pouvez redimensionner le tableau.
Array.Resize(ref array, array.Length + 1);
array[array.Length - 1] = "new string";
Utiliser la liste <T> de System.Collections.Generic
List<string> myCollection = new List<string>();
…
myCollection.Add(aString);
Si vous voulez vraiment un tableau à la fin, utilisez
myCollection.ToArray();
Il serait peut-être préférable d’abstraire dans une interface, telle que IEnumerable, puis de simplement renvoyer la collection.
Éditer: Si vous devez utiliser un tableau, vous pouvez le préallouer à la bonne taille (c’est-à-dire le nombre de FileInfo que vous avez). Ensuite, dans la boucle foreach, maintenez un compteur pour l'index de tableau que vous devez mettre à jour ensuite.
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;
}
Eazy
// Create list
var myList = new List<string>();
// Add items to the list
myList.Add("item1");
myList.Add("item2");
// Convert to array
var myArray = myList.ToArray();
Si je ne me trompe pas c'est:
MyArray.SetValue(ArrayElement, PositionInArray)
Voici comment j'ajoute une chaîne si nécessaire:
string[] myList;
myList = new string[100];
for (int i = 0; i < 100; i++)
{
myList[i] = string.Format("List string : {0}", i);
}
string[] coleccion = Directory.GetFiles(inputPath)
.Select(x => new FileInfo(x).Name)
.ToArray();
Pourquoi n'utilisez-vous pas une boucle for au lieu d'utiliser foreach? Dans ce scénario, vous ne pouvez pas obtenir l'index de l'itération actuelle de la boucle foreach.
Le nom du fichier peut être ajouté à la chaîne [] de cette manière,
private string[] ColeccionDeCortes(string Path)
{
DirectoryInfo X = new DirectoryInfo(Path);
FileInfo[] listaDeArchivos = X.GetFiles();
string[] Coleccion=new string[listaDeArchivos.Length];
for (int i = 0; i < listaDeArchivos.Length; i++)
{
Coleccion[i] = listaDeArchivos[i].Name;
}
return Coleccion;
}
Ce code fonctionne très bien pour préparer les valeurs dynamiques Array pour spinner dans Android:
List<String> yearStringList = new ArrayList<>();
yearStringList.add("2017");
yearStringList.add("2018");
yearStringList.add("2019");
String[] yearStringArray = (String[]) yearStringList.toArray(new String[yearStringList.size()]);
Ajoutez une référence à Linq using System.Linq;
et utilisez la méthode d'extension fournie Append
: public static IEnumerable<TSource> Append<TSource>(this IEnumerable<TSource> source, TSource element)
Vous devez ensuite le reconvertir en string[]
à l'aide de la méthode .ToArray()
.
Il est possible, car le type string[]
implémente IEnumerable
, il implémente également les interfaces suivantes: IEnumerable<char>
, IEnumerable
, IComparable
, IComparable<String>
, IConvertible
, IEquatable<String>
, ICloneable
using System.Linq;
public string[] descriptionSet new string[] {"yay"};
descriptionSet = descriptionSet.Append("hooray!").ToArray();
Je ne voudrais pas utiliser un tableau dans ce cas. Au lieu de cela, je voudrais utiliser un StringCollection.
using System.Collections.Specialized;
private StringCollection ColeccionDeCortes(string Path)
{
DirectoryInfo X = new DirectoryInfo(Path);
FileInfo[] listaDeArchivos = X.GetFiles();
StringCollection Coleccion = new StringCollection();
foreach (FileInfo FI in listaDeArchivos)
{
Coleccion.Add( FI.Name );
}
return Coleccion;
}
string[] MyArray = new string[] { "A", "B" };
MyArray = new List<string>(MyArray) { "C" }.ToArray();
//MyArray = ["A", "B", "C"]
pour effacer le tableau et rendre le nombre de ses éléments = 0 en même temps, utilisez ceci ..
System.Array.Resize(ref arrayName, 0);