如何将字符串添加到 string[] 数组?没有.Add功能
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 转换为字符串,然后将其添加到我的数组中。我该怎么做?
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;
}
I'd like to convert the FI.Name
to a string and then add it to my array. How can I do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(15)
您无法将项目添加到数组中,因为它的长度是固定的。您正在寻找的是一个
List
,稍后可以使用list.ToArray()
将其转换为数组,例如You can't add items to an array, since it has fixed length. What you're looking for is a
List<string>
, which can later be turned to an array usinglist.ToArray()
, e.g.或者,您可以调整数组的大小。
Alternatively, you can resize the array.
使用列表来自 System.Collections.Generic
或者,简写(使用集合初始化程序):
如果您确实想要在末尾使用数组,
请使用 抽象为接口(例如 IEnumerable),然后仅返回集合可能会更好。
编辑:如果您必须使用数组,您可以将其预先分配到正确的大小(即您拥有的 FileInfo 的数量)。然后,在 foreach 循环中,为接下来需要更新的数组索引维护一个计数器。
Use List<T> from System.Collections.Generic
Or, shorthand (using collection initialiser):
If you really want an array at the end, use
You might be better off abstracting to an interface, such as IEnumerable, then just returning the collection.
Edit: If you must use an array, you can preallocate it to the right size (i.e. the number of FileInfo you have). Then, in the foreach loop, maintain a counter for the array index you need to update next.
轻松
Eazy
如果我没记错的话是:
If I'm not mistaken it is:
这是我在需要时添加到字符串的方法:
This is how I add to a string when needed:
为什么不使用 for 循环而不是使用 foreach 呢?在这种情况下,您无法获取 foreach 循环当前迭代的索引。
文件名可以这样添加到 string[] 中,
Why don't you use a for loop instead of using foreach. In this scenario, there is no way you can get the index of the current iteration of the foreach loop.
The name of the file can be added to the string[] in this way,
此代码非常适合为 Android 中的微调器准备动态值数组:
This code works great for preparing the dynamic values Array for spinner in Android:
using System.Linq;
添加对 Linq 的引用,并使用提供的扩展方法Append
:public static IEnumerable;附加(此 IEnumerable源,TSource 元素)
然后,您需要使用
.ToArray()
方法将其转换回string[]
。这是可能的,因为类型
string[]
实现了IEnumerable
,它还实现了以下接口:IEnumerable
、IEnumerable
、IComparable
、IComparable
、IConvertible
、IEquatable
、ICloneable
请记住,ToArray 会分配新数组,因此,如果要添加更多元素并且不知道将拥有多少元素,最好使用 System.Collections.Generic 中的 List。
Adding a reference to Linq
using System.Linq;
and use the provided extension methodAppend
:public static IEnumerable<TSource> Append<TSource>(this IEnumerable<TSource> source, TSource element)
Then you need to convert it back to
string[]
using the.ToArray()
method.It is possible, because the type
string[]
implementsIEnumerable
, it also implements the following interfaces:IEnumerable<char>
,IEnumerable
,IComparable
,IComparable<String>
,IConvertible
,IEquatable<String>
,ICloneable
Remember that ToArray allocates new array, therefore if you're adding more elements and you don't know how much of them you're going to have it's better to use List from System.Collections.Generic.
在这种情况下我不会使用数组。相反,我会使用 StringCollection。
I would not use an array in this case. Instead I would use a StringCollection.
要清除数组并同时使其元素数 = 0,请使用 this..
to clear the array and make the number of it's elements = 0 at the same time, use this..
创建一个扩展:
并按如下方式使用它:
Create an extention:
And use it as such:
我会这样做:
I would do it like this: