技术开发 频道

C#本质:运算符和控制流

  while和do/while循环

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

  statement

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

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);

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循环以二进制形式显示一个整数

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表达式可以是由多个子表达式构成的一个复杂表达式。

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循环时执行的代码

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)

0
相关文章