《C#本质论》读书笔记(七)控制流语句

控制流语句之C#循环语句

while和do/while循环

 

while语句的常规形式:while(booLean-expression) //括号里为一个布尔表达式

                                   statement

       只要布尔表达式求值为true,计算机就会反复执行语句statement。如果求值为false,就从statement之后的那一行语句执行。

 

ContractedBlock.gifExpandedBlockStart.gif代码
class Program
{
static void Main(string[] args)
{
int a = 5,b = 10;
while (a < b)
{
a
= ++a;
Console.WriteLine(
"输出");
}
}
}

do/while循环与while循环非常相似,只是它用于从1到n的数字循环,而且n在循环开始之前无法确定.do/while的一个典型应用就是反复提示用户输入.

do/while循环的常规形式:     do

                                         statement

                                     while(booLean-expression);

 

ContractedBlock.gifExpandedBlockStart.gif代码
class Program
{
static void Main(string[] args)
{
int a = 5,b = 10;
do
{
a
= ++a;
Console.WriteLine(a);
}
while (a < b);
}
}

 

 

与while循环不同的是,do/while不管while循环里的布尔表达式为true还是false,都至少对循环体执行一次.

 

 for循环

      递增和递减运算符经常在for循环中使用。与while循环相似,for循环反复执行一个代码块,直到满足一个指定的条件。区别在于,for循环有一套内建的语法规定了如何初始化、递增以及测试一个计数器的值。

下面代码使用for循环以二进制形式显示一个整数

 

ContractedBlock.gifExpandedBlockStart.gif代码
class Program
{
static void Main(string[] args)
{
const int size = 64;
ulong value;
char bit;
System.Console.Write(
"Enter an integer");
value
= (ulong)long.Parse(System.Console.ReadLine());

ulong mask = 1ul << size - 1;
for (int count = 0; count < size; count++)
{
bit
= ((mask & value) > 0) ? '1' : '0';
System.Console.Write(bit);
mask
>>= 1;
}
}
}

 

 

for循环的常规形式如下

for(initial;booLean-expression;Loop)

statement

下面对for循环的各个部分进行了解释

initial表达式执行第一次循环之前的操作。initial表达式不一定非要声明一个新变量。例如,可以在之前声明好变量,在for循环中只是初始化它。然而,在这里声明的变量的作用域只在for语句之内。

for循环的booLean-expression部分指定了循环结束条件。一旦该条件为false,就会终止循环,这和while循环是相似的。并且仅当布尔表达式求值为true时,for循环会一直重复。在上例中,循环会在count递增到64的时候退出。

loop表达式会在每次循环之后执行。loop表达式一般表示为对initial表达式中的变量递增或递减

statement部分是在条件表达式保持为true的时候执行的代码。

 for语句的圆括号内允许省略任何元素。for(;;){....}是完全有效的,只要你有办法从循环中退出。类似地,initial和loop表达式可以是由多个子表达式构成的一个复杂表达式

ContractedBlock.gifExpandedBlockStart.gif代码
class Program
{
static void Main(string[] args)
{
for (int x = 0, y = 5; ((x <= 5) && (y >= 0)); y--, x++)
{
System.Console.Write(
"{0}{1}{2}\t",x,(x>y? '>' : '<'),y);
}
}
}

 

选择for和while循环

      虽然两种语句可以替换使用,但假如涉及某种形式的计数器,而且在循环初始化的时候就知道循环次数,那么一般使用for循环。相反,假如循环不基于计数器,或者在刚开始的时候无法确定循环次数,那么一般使用while循环。

 

foreach循环

      C#语言的最后一个循环语句是foreach。foreach用于遍历一个数据项集合,设置一个标识符来依次表示其中的每一项。在循环期间,可以对数据项执行指定的操作。foreach循环的特点在于:不会出现计数错误,也不可能越过集合边界。

      foreach语句的常规形式

      foreach(type identifier in collection)

         statement;

      下面对foreach语句的各个部分进行解释

      type为代表collection中的每个数据项的identifier声明一个数据类型。

      identifier是一个只读变量,foreach结构会自动将collection中的下一项指派给它。identifier的作用域限制在foreach循环以内。

      collection是代表多个数据项的一个表达式,比如数组。

      statement是每一次foreach循环时执行的代码

 

ContractedBlock.gifExpandedBlockStart.gif代码
class Program
{
static void Main(string[] args)
{
char[] cells ={ '1','2','3','4','5','6','7','8','9'};
System.Console.Write(
"The available moves are as follows");

foreach (char cell in cells)
{
if (cell != '0' && cell != 'x')
{
System.Console.Write(
"{0}",cell);
}
}
}
}

 

        执行到foreach语句时,它将cells数组中的第一项,也就是值'1'赋给cell变量。然后执行foreach语句块内的代码。if语句判断cell的值是否等于'0'或'x',如果两者都不是,就在控制台输出cell的值。下一次循环时,将下一个数组值赋给cell,依次类推。

        要记住的一个重点是,foreach循环期间,编译器禁止修改identifier变量(这里是cell)

转载于:https://www.cnblogs.com/aipeiyi/archive/2010/07/23/1783715.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值