所有的编程语言多提供了重复代码块直到终止条件的方式。不过过去用过什么方法,C#迭代语句都不会让你感到陌生。C#提供了四种迭代结构:
- for循环
- foreach/in循环
- while循环
- do/while循环
下面让我们探讨一下每一个循环结构。
- for循环
如果需要迭代一段代码规定次数,for语句会提供很大的灵活性。从本质上来说,我们可以指定一段代码重复的次数和终止条件。下面给大家一个例子:
//基本循环
static void forLoopExample()
{
//注意!“i”只在for循环里可见
for(int i = 0;i <4; i++)
{
Console.WriteLine("Number is:{0}", i);
}
}
- foreach循环
C#foreach关键字允许遍历某种容器中的所选项,无需测试数组的上限。不过与for循环不同,foreach循环只会以线性(n+1)的方式遍历容器。
然而,当你只需逐项遍历某个集合时,foreach循环是最佳选择。下面是两个使用foreach的示例,一个遍历字符串数组,另一个遍历整数数组。注意:in关键字前面的数据类型代表容器中的数据类型:
//使用foreach迭代数组项
static void Fodgfkgds()
{
string[] carTypes = { "Ford", "Howo", "Joge", "Home" };
foreach (string a in carTypes)
Console.WriteLine(a);
int[] myInts = { 10, 20, 30, 40 };
foreach (int i in myInts)
Console.WriteLine(i);
}
In关键字后面的项目可以是简单数组,更确切的说是任何实现IEnumerable接口的类。.Net基础类库配备了大量包含普通抽象数据类型(ADT)实现的集合。
在foreach结构中也可以使用隐式类型。因为我们不知道subset变量具体的基础数据类型,可以使用隐式类型迭代结构集:
static void Dsreew(){
int[] numbers = { 10,20,30,40,1,2,3,4 };
//LINQ查询
var subset = from I in numbers where i < 10 select i;
Console.Write (“Valus in subset:”);
foreach (var i in subset)
{
Console.Write (“{0}”i);
}
}
- while和do/while循环结构
当希望执行一段语句直到满足某个终止条件时,while循环结构很有用。在while循环的作用域内,我们要确保终止事件会产生,否则就会产生无限循环。在如下代码中”In while loop”消息会不断输出,直到用户在命令提示符中输入yes才结束循环。
static void rfrfekdjfoe()
{
string userIsDone = "";
//对字符串的小写副本进行测试
while (userIsDone.ToLower()!= "yes")
{
Console.WriteLine("In while loop");
Console.WriteLine("Ate you done?[yes] [no]");
userIsDone = Console.ReadLine();
}
}
和while循环密切相关的是do/while语句。和简单的while循环相似,当我们需要进行一些次数不定的动作时,可以使用do/while。区别是do/while循环肯定会执行至少一次对应的代码块。相比之下,如果以开始终止条件就是false,很可能while循环就不会执行。
static void sdtfhfjhredif()
{
string userfdg = "";
do
{
Console.WriteLine("Helloween");
Console.WriteLine("dfgrerre? [yes] [no]:");
userfdg = Console.ReadLine();
} while (userfdg.ToLower() != "yes");
}