我想对字符串数组执行类似foreach操作。我知道我可以用做它循环和增加,但只是想知道如果有一些类似的foreach:我可以在C#中使用类似foreach的方式迭代数组吗
foreach (var test in testlist)
感谢
我想对字符串数组执行类似foreach操作。我知道我可以用做它循环和增加,但只是想知道如果有一些类似的foreach:我可以在C#中使用类似foreach的方式迭代数组吗
foreach (var test in testlist)
感谢
是,像这样的
string[] arr = {"a", "aa", "aaa"};
foreach(string item in arr)
{
Console.WriteLine("array element: " + item);
}
比如你给出的是正确的。
string[] mystrings = GetArrayOfStrings();
foreach(String s in mystrings) {
}
编辑:如果testlist是一个数组,那么你就有答案,因为数组实现IEnumerable
。
foreach (var test in testlist)
{
}
转换为列表并不是必需的,只是增加了系统开销。 – 2011-05-07 02:47:54
@rockinthesixstring - 好点。谢谢! – Leons 2011-05-07 02:51:05
不要转换为'List',任何接受'IEnumerable'的东西都会接受一个数组。 'ToList'方法很昂贵,在这里完全没有必要。 – 2011-05-07 08:06:30
数组类型派生自System.Array类。这是它的声明:
public abstract class Array : ICloneable, IList, ICollection,
IEnumerable, IStructuralComparable, IStructuralEquatable
{
// etc..
}
它实现IEnumerable,这意味着支持foreach语句。
+1 IEnumerable提及。我已经看到我拥有数组或列表参数的方法,当99%的方法可能是IEnumerable – 2011-05-07 05:14:45
而技术上正确时,这有点误导。特别是它没有提到具体的数组类型将实现'IEnumerable
那么,抖动完全可以自由实施“如果它像鸭子一样走路,游泳和嘎嘎叫,那么它就是鸭子”规则。当然,它会生成与for()循环相同的代码。非常高效,无界限检查。但是,是的,对于需要转换为IEnumerator <>的情况,SZArrayHelper类实现了'GetEnumerator
这是你可以在询问之前轻松测试自己的事情。 – Gabe 2011-05-07 02:45:02
我的错在那里。对不起,但我确实测试过,并得到了我认为存在的错误,因为我正在做一些不可能的事情。谢谢大家的帮助。 – MikeSwanson 2011-05-07 02:59:35
尽管对这个问题有一定的评价,因为OP在提问之前似乎没有检验过他的理论。近距离投票无效。这是一个真正的问题,并不难理解。 – 2011-05-07 03:21:01