2011-05-07 63 views
-4

我想对字符串数组执行类似foreach操作。我知道我可以用做它循环和增加,但只是想知道如果有一些类似的foreach:我可以在C#中使用类似foreach的方式迭代数组吗

foreach (var test in testlist) 

感谢

+10

这是你可以在询问之前轻松测试自己的事情。 – Gabe 2011-05-07 02:45:02

+0

我的错在那里。对不起,但我确实测试过,并得到了我认为存在的错误,因为我正在做一些不可能的事情。谢谢大家的帮助。 – MikeSwanson 2011-05-07 02:59:35

+0

尽管对这个问题有一定的评价,因为OP在提问之前似乎没有检验过他的理论。近距离投票无效。这是一个真正的问题,并不难理解。 – 2011-05-07 03:21:01

回答

3

是,像这样的

string[] arr = {"a", "aa", "aaa"}; 

foreach(string item in arr) 
{ 
    Console.WriteLine("array element: " + item); 
} 
1

比如你给出的是正确的。

string[] mystrings = GetArrayOfStrings(); 
foreach(String s in mystrings) { 

} 
0

编辑:如果testlist是一个数组,那么你就有答案,因为数组实现IEnumerable

foreach (var test in testlist) 
{ 

} 
+1

转换为列表并不是必需的,只是增加了系统开销。 – 2011-05-07 02:47:54

+0

@rockinthesixstring - 好点。谢谢! – Leons 2011-05-07 02:51:05

+0

不要转换为'List',任何接受'IEnumerable'的东西都会接受一个数组。 'ToList'方法很昂贵,在这里完全没有必要。 – 2011-05-07 08:06:30

3

数组类型派生自System.Array类。这是它的声明:

public abstract class Array : ICloneable, IList, ICollection, 
    IEnumerable, IStructuralComparable, IStructuralEquatable 
{ 
    // etc.. 
} 

它实现IEnumerable,这意味着支持foreach语句。

+0

+1 IEnumerable提及。我已经看到我拥有数组或列表参数的方法,当99%的方法可能是IEnumerable – 2011-05-07 05:14:45

+0

而技术上正确时,这有点误导。特别是它没有提到具体的数组类型将实现'IEnumerable '。而且'foreach'不会使用'IEnumerable.GetEnumerator'方法。 – CodesInChaos 2011-09-05 13:53:38

+0

那么,抖动完全可以自由实施“如果它像鸭子一样走路,游泳和嘎嘎叫,那么它就是鸭子”规则。当然,它会生成与for()循环相同的代码。非常高效,无界限检查。但是,是的,对于需要转换为IEnumerator <>的情况,SZArrayHelper类实现了'GetEnumerator ()'。 – 2011-09-05 14:12:23

相关问题