如何将字符串添加到字符串[]数组? 没有。添加函数

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转换成一个字符串,然后将它添加到我的数组中。我怎么能这么做?

933365 次浏览

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

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

因为数组的长度是固定的,所以不能向数组中添加项。你要找的是一个List<string>,它可以稍后使用list.ToArray()转换为一个数组,例如。

List<string> list = new List<string>();
list.Add("Hi");
String[] str = list.ToArray();
string[] coleccion = Directory.GetFiles(inputPath)
.Select(x => new FileInfo(x).Name)
.ToArray();

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

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

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

如果我没记错的话是:

MyArray.SetValue(ArrayElement, PositionInArray)

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

为什么不用for循环代替foreach循环呢?在这种情况下,您无法获得foreach循环当前迭代的索引。

文件名可以这样添加到字符串[]中,

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

这是我在需要时添加字符串的方法:

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

这段代码用于在Android中为spinner准备动态值数组:

    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);
string[] MyArray = new string[] { "A", "B" };
MyArray = new List<string>(MyArray) { "C" }.ToArray();
//MyArray = ["A", "B", "C"]
为Linq using System.Linq;添加引用,并使用提供的扩展方法Append: public static IEnumerable<TSource> Append<TSource>(this IEnumerable<TSource> source, TSource element) 然后你需要使用.ToArray()方法将其转换回string[]

这是可能的,因为string[]类型实现了IEnumerable,它也实现了以下接口:IEnumerable<char>IEnumerableIComparableIComparable<String>IConvertibleIEquatable<String>ICloneable

using System.Linq;
public string[] descriptionSet new string[] {"yay"};
descriptionSet = descriptionSet.Append("hooray!").ToArray();

请记住,ToArray分配新的数组,因此,如果你添加更多的元素,你不知道你将有多少,最好使用List from System.Collections.Generic。

我会这样做:

DirectoryInfo X = new DirectoryInfo(Path);
FileInfo[] listaDeArchivos = X.GetFiles();
string[] Coleccion = new String[] { };


foreach (FileInfo FI in listaDeArchivos)
{
Coleccion = Coleccion.Concat(new string[] { FI.Name }).ToArray();
}


return Coleccion;

创建一个扩展:

public static class TextFunctions
{
public static string [] Add (this string[] myArray, string StringToAdd)
{
var list = myArray.ToList();
list.Add(StringToAdd);
return list.ToArray();
}
}

并这样使用它:

foreach (FileInfo FI in listaDeArchivos)
{
//Add the FI.Name to the Coleccion[] array,
Coleccion.Add(FI.Name);
}