我可以使用类似于foreach的东西在C#中迭代数组吗

我可以使用类似于foreach的东西在C#中迭代数组吗,c#,C#,我想做一些类似于字符串数组上的foreach的事情。我知道我可以通过for循环和递增来实现,但我只是想知道是否有类似于foreach的东西: foreach (var test in testlist) 谢谢是的,像这样 string[] arr = {"a", "aa", "aaa"}; foreach(string item in arr) { Console.WriteLine("array element: " + item); } 你举的例子是正确的 string[] m

我想做一些类似于字符串数组上的foreach的事情。我知道我可以通过for循环和递增来实现,但我只是想知道是否有类似于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)
{

}

数组类型派生自System.Array类。声明如下:

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

它实现了IEnumerable,这意味着foreach语句是受支持的。

这是一种你可以在提问之前轻松测试自己的东西。这是我的错。很抱歉,我确实测试了它,并得到了我认为存在的错误,因为我正在做一些不可能的事情。谢谢大家的帮助。尽管有人对这个问题投了反对票,因为OP在提问之前似乎没有测试过他的理论。最后一票无效。这是一个真正的问题,不难理解。@rock:这不是一个真正的问题的原因是因为答案是“是”。我试过三次提交答案,但它总是告诉我答案太短了。非常好的线索。转换为列表是不必要的,只会增加系统开销。@RocktheSixstring-很好的观点。谢谢不要转换为
列表
,任何接受
IEnumerable的内容都将接受数组。
ToList
方法很昂贵,在这里完全没有必要。@Cody Gray-谢谢你的反馈。我编辑了我的答案,以反映您的反馈。+1供参考。我看到过我的方法中有数组或列表参数,但其中99%可能是IEnumerablew,虽然技术上是正确的,但这有点误导。特别是它没有提到具体的数组类型将实现
IEnumerable
。而且
foreach
不会使用
IEnumerable.GetEnumerator
方法。抖动完全可以自由实现“如果它像鸭子一样走路、游泳和嘎嘎叫,那么它就是鸭子”规则。当然,它会生成与for()循环相同的代码。非常有效,无边界检查。但是,对于需要转换为IEnumerator的情况,SzarayHelper类实现了
GetEnumerator()