如何将string添加到string数组? 没有.Addfunction

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转换为一个string,然后将其添加到我的数组。 我怎样才能做到这一点?

您不能将项目添加到数组中,因为它具有固定的长度,您要查找的是List<string> ,稍后可以使用list.ToArray()将其转换为数组。

或者,您可以调整数组的大小。

 Array.Resize(ref array, array.Length + 1); array[array.Length - 1] = "new string"; 

使用System.Collections.Generic中的List <T>

 List<string> myCollection = new List<string>(); … myCollection.Add(aString); 

如果你真的想在最后一个数组,使用

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

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(); 

如果我没有弄错它是:

 MyArray.SetValue(ArrayElement, PositionInArray) 
 string[] coleccion = Directory.GetFiles(inputPath) .Select(x => new FileInfo(x).Name) .ToArray(); 

这是我需要时添加到string的方式:

  string[] myList; myList = new string[100]; for (int i = 0; i < 100; i++) { myList[i] = string.Format("List string : {0}", i); } 

为什么不使用for循环而不是使用foreach。 在这种情况下,你不可能得到foreach循环当前迭代的索引。

文件名可以通过这种方式添加到string[]中,

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

在这种情况下,我不会使用数组。 相反,我会使用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; } 

此代码非常适合在Android中为微调器准备dynamic值Array:

  List<String> yearStringList = new ArrayList<>(); yearStringList.add("2017"); yearStringList.add("2018"); yearStringList.add("2019"); String[] yearStringArray = (String[]) yearStringList.toArray(new String[yearStringList.size()]); 

清除数组,并使其元素数= 0,同时使用这个..

 System.Array.Resize(ref arrayName, 0);