但我在C#中的代码无法正常工作。
foreach(int CharLength in Char.Length)
{
//Code Here
}
但是我得到一个错误,表示我无法在foreach语句中传递int类型。
答案 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
是一个整数,无法迭代,因此编译器会抛出错误。希望它清楚。