foreach语句

时间:2016-07-14 16:22:48

标签: c# foreach

但我在C#中的代码无法正常工作。

foreach(int CharLength in Char.Length)
{
 //Code Here

}

但是我得到一个错误,表示我无法在foreach语句中传递int类型。

3 个答案:

答案 0 :(得分:4)

您可能正在寻找的是

// Enumerable.Range gives you 1,2,3,...Char.Length
foreach(int CharLength in Enumerable.Range(1, Char.Length)) 

// this sets CharLength to 0, 1, 2, ... CharLength-1
for(int CharLength = 0; CharLength < Char.Length; CharLength++)

答案 1 :(得分:0)

foreach和for循环是不同的,并且操作方式不同。

for循环在其括号中有三个不同的操作,每个操作都是可选的。

因此,(;;)的

将生成与while(true)相同的无限循环。

第一部分在循环开始之前完成,通常用于初始化索引变量。它在第一次运行之前只执行一次。

第二个是确定循环应该停止还是继续的测试。它在每次循环开始循环之前执行,包括第一次。

第三个是在计算测试操作后每次循环结束时执行的操作。

foreach的工作方式不同,只有一个语句。它定义了一个变量thas的范围(就像上面for循环的第一部分一样)到循环体。此变量与Collection包含在一起,该Collection包含与该变量相同类型的元素。然后每次循环开始时,变量将分配给此集合中的下一个元素。当循环遍历集合中的所有元素时,循环结束。

此过程称为枚举集合的元素。对于可枚举的类(在此解释中被视为集合),它必须实现IEnumerable接口。

在你的循环中,它不起作用的原因是你声明一个int类型的变量并尝试枚举Char.length返回的集合,它本身是int但不是IEnumerable。

我希望这有助于解释为什么编译器似乎抱怨它很多。

答案 2 :(得分:0)

System.Int未实现IEnumerable接口,这是您无法在foreach循环中传递int的原因。任何实现IEnumerable的类都可以使用foreach进行迭代。在您的情况下,Char.Length是一个整数,无法迭代,因此编译器会抛出错误。希望它清楚。