一周学会C#(语句三)
C#才鸟(QQ:249178521)
9.for语句
· for 语句
w for块中声明的变量是局部的,只在for块中有效
w 可以省略for语句中的任何一部分
for (int digit = 0; digit != 10; digit++)
{
Console.Write("{0} ", digit);
}
//屏幕上显示0 1 2 3 4 5 6 7 8 9
在for块中声明的变量只在for块中有效。例如:
for (int digit = 0; digit != 10; digit++)
{ ... }
Console.WriteLine(digit); //错误,digit只在for块中有效
可以通过逗号在for语句中声明多个变量和多个变化语句:
for (int i = 0, j = 0; i + j < 20; i++, j++)
{ ... }
10.foreach
· 来源于shell, VB, PERL
w 用于任一集合,包括数组
using System;
sealed class Foreach
{
static void Main(string[] args)
{
foreach (string arg in args)
{
Console.Write("{0} ", arg);
}
Console.WriteLine();
}
}
把以上程序在windows命令行进行编译:C:\Sharp>csc Foreach.cs
然后键入:C:\Sharp>Foreach 0 1 2 3 4 5 6 7 8 9
屏幕上显示0 1 2 3 4 5 6 7 8 9
foreach用来遍历集合或数组中的元素。
11.foreach的几点注意
· foreach ( 类型 标识符 in 表达式 )
w 类型和标识符声明一个循环变量
w 循环变量隐含为readonly, 不能有ref 或out 修饰
w 表达式是可列举的集合
sealed class ForeachTranslation
{
static void Example(MyWibbleCollection wibbles)
{
MyEnumerator pos = wibbles.GetEnumerator();
while (pos.MoveNext())
{
Wibble current = pos.Current;
Console.Write("{0} ", current);
}
}
}
集合类型的定义规则:(假设集合的名字是C)
C必须定义一公有函数GetEnumerator(),该函数的返回值是一结构类型或是一类类型或是一接口类型(假设返回值的名字是E);
返回值E的定义规则:
ü E包含一公有函数MoveNext(),用来使E指向集合中的下一个元素,返回值的类型是bool。
ü E包含一公有属性Current,用来读取当前值。这个属性的类型是集合元素的类型。
12.break/continue
break用来结束一个循环,continue用来重新启动一个循环。
13.找错
{
for (int i = 0; i != 12; i++) 1
{
...
}
int i = 0;
}
for (int i = 0, i == 12, i++) 2
{
...
}
foreach (int i in array) 3
{
i++;
}
第1个程序的错误:不能在一个父块和一个子块中声明两个相同名字的变量
第2个程序的错误:不是使用逗号分割for语句的三个部分,而应使用分号。
for语句的判断条件应为逻辑语句。
第3个程序的错误:foreach的循环变量是只读的