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到字符串中,然后将其添加到数组中。我该怎么做呢?
使用System.Linq添加对Linq的引用;并使用提供的扩展方法追加:公共静态IEnumerable<TSource>追加<TSource>(此IEnumerable<TSource>源,TSource元素)
然后你需要使用. toarray()方法将它转换回字符串[]。
这是可能的,因为类型string[]实现了IEnumerable,它也实现了以下接口:IEnumerable<char>, IEnumerable, IComparable, IComparable< string >, IConvertible, IEquatable< string >, ICloneable
using System.Linq;
public string[] descriptionSet new string[] {"yay"};
descriptionSet = descriptionSet.Append("hooray!").ToArray();
请记住,ToArray分配新的数组,因此,如果你添加更多的元素,你不知道你将有多少,最好使用List from System.Collections.Generic。
使用List<T> from System.Collections.Generic
List<string> myCollection = new List<string>();
…
myCollection.Add(aString);
或者,简写(使用集合初始化器):
List<string> myCollection = new List<string> {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;
}