C#拾遗之foreach迭代语句

C#语言提供了一个for语句循环的捷径,而且还促进了集合类的更为一致,它就是foreach语句。

foreach语句的定义格式为:

foreach(类型   变量  in   集合)

{

子语句;

}

每执行一次内嵌语句,循环变量就依次取集合中的一个元素代入其中,在这里,循环变量是一个只读型局部变量,如试图改变其值将会发生编译错误。

foreach语句用于列举出集合中所有的元素,foreach语句中的表达式由关键字in隔开的两个项组成。in右边的项是集合名,in左边的项是变量名,用来存放该集合中的每个元素。

foreach语句的优点一:语句简洁,效率高。

用一个遍历数组元素的例子来说明:

先用foreach语句来输出数组中的元素:

<span style="font-size:18px;">            int[,] ints =new int[2,3]{{1,2,3},{4,5,6}};
            foreach (int temp in ints)
            {
                Console.WriteLine(temp);
            }
            Console.ReadLine();</span>

再用for语句输出数组中元素:

           <span style="font-size:18px;">     int[,] ints =new int[2,3]{{1,2,3},{4,5,6}};
            for (int i = 0; i < ints.GetLength(0); i++)
            {
                for (int j = 0; j < ints.GetLength(1); j++)
                {
                    Console.WriteLine(ints[i,j]);
                }
            }
            Console.ReadLine();</span>

这两种代码执行的结果是一样的都是每行一个元素,共6行,元素分别是1 2 3 4 5 6。

在一维数组中还无法体现出foreach语句的简洁性,高效率性,但是在二维数组,甚至多维数组中体现的更为明显和方便,所以在C#语言中要用循环语句提倡使用foreach语句。

foreach语句的优点二:避免不必要的因素

在C#语言中使用foreach语句不用考虑数组起始索引是几,很多人可能从其他语言转到C#的,那么原先语言的起始索引可能不是1,例如VB或者Delphi语言,那么在C#中使用数组的时候就难免疑问到底使用0开始还是用1开始呢,那么使foreach就可以避免这类问题。

foreach语句的优点三:foreach语句自动完成类型转换

这种体现可能通过如上的例子看不出任何效果,但是对于ArrayList之类的数据集来说,这种操作就显得比较突出。

先用foreach语句来实现类型转换操作:在使用ArrayList类时先要引入using System.Collections;

<span style="font-size:18px;">            int[] a=new int[3]{1,2,3};
            ArrayList arrint = new ArrayList();
            arrint.AddRange(a);
            foreach (int temp in arrint)
            {
                Console.WriteLine(temp);
            }
            Console.ReadLine();</span>

再来使用for语句来实现:需要进行显式的强制转换

<span style="font-size:18px;">            int[] a=new int[3]{1,2,3};
            ArrayList arrint = new ArrayList();
            arrint.AddRange(a);
            for (int i = 0; i < arrint.Count;i++ )
            {
                int n = (int)arrint[i];
                Console.WriteLine(n);
            }
            Console.ReadLine();</span>

两个程序输出的结果为:每一行一个元素,分别为1,2,3。

foreach语句对于string类更是简洁:

<span style="font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace @foreach
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = "This is an example of a foreach";
            foreach (char i in str)
            {
                if (char.IsWhiteSpace(i))
                {
                    Console.WriteLine(i);//当i为空格时输出并换行
                }
                else
                {
                    Console.Write(i);//当i不为空格时只是输出
                }
            }
           Console.ReadLine();
        }
    }
}</span>

输出的结果为:每一行一个单词,分别为This, is ,an ,example ,of ,a ,foreach。

对于foreach语句的理解,目前也就知道这多了,随着更深层次的学习,或许会有更好的理解吧。

时间: 2024-08-30 17:20:59

C#拾遗之foreach迭代语句的相关文章

C#流程控制语句--迭代语句(while,do....while, for , foreach)

迭代语句:有的时候,可能需要多次执行同一块代码.函数中的第一个语句先执行,接着是第二个语句,依此类推. 迭代语句:while(先检查后执行) while(条件表达式 bool类型) { 代码语句 } For example int iNum = 1; //iNum从1到100递增 int iSum = 0; //记录每次累加后的结果 while (iNum <= 100) //iNum <= 100 是循环条件 { iSum += iNum; //把每次的iNum的值累加到上次累加的结果中 i

C#迭代语句、跳转语句--C#基础

foreach每执行一次内含的代码时,循环变量就会一次读取集合中的一个元素,不需要个数.循环变量只是一个只读的局部变量,这个值是不能修改的.char后的word是 foreach语句的迭代变量,它是只读的,不允许修改. 源程序: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 表达式 { cla

引用 foreach 迭代变量”在C#7.3

引言 有C#基础的,当问到循环有哪些,会毫不犹豫的说出的for.do while.foreach及while这几种,但是到具体实际开发中,我们遇到一些问题,比如:到底选择哪种?为什么选择这种?哪种好像都可以?,其实在大多数情况下基本上可以通用,但是遇到比如Dictionary <[key] , [value] >只能用foreach遍历,本文带你了解foreach的原理,以及使用场景. foreach原理 在上边博客<IEnumerable和IEnumerator详解>中,我们自定

foreach循环语句

一.foreach循环语句介绍: 1.格式: for(类型 变量名称:被遍历数组或集合){ 其他操作(输出操作) } 2.作用: 主要是用于简化书写 二.foreach循环语句遍历数组: public class oneHundredAndEight_oneHundredAndNine { public static void main(String[] args) { String[] names = {"萌萌","纯纯","爱爱","

ISO/IEC 9899:2011 条款6.8.5——迭代语句

6.8.5 迭代语句 语法 1.iteration-statement: while    (    expression    )    statement do    statement    while    (    expression    )    ; for    (    expressionopt    ;    expressionopt     ;    expressionopt   )    statement for    (    declaration    ;

13.PHP中循环结构之foreach循环语句(任务一)

在PHP中foreach循环语句,常用于遍历数组,一般有两种使用方式:不取下标.取下标. (1)只取值,不取下标 <?php foreach (数组 as 值){ //执行的任务 } ?> (2)同时取下标和值 <?php foreach (数组 as 下标 => 值){ //执行的任务 } ?> 任务 列出所有学生姓名! 有一组以学号为下标,姓名为值的数组,这时候需要遍历数组的姓名. 1.在右边编辑器中的第16行输入指令: foreach($students as $v)

PHP中循环结构之foreach循环语句

在PHP中foreach循环语句,常用于遍历数组,一般有两种使用方式:不取下标.取下标. (1)只取值,不取下标 <?php foreach (数组 as 值){ //执行的任务 } ?> (2)同时取下标和值 <?php foreach (数组 as 下标 => 值){ //执行的任务 } ?>

C#基于数据库存储过程的AJAX分页实例

本文实例讲述了C#基于数据库存储过程的AJAX分页实现方法.分享给大家供大家参考.具体如下: 首先我们在数据库(SQL Server)中声明定义存储过程 代码如下: use sales    –指定数据库 if(exists(select * from sys.objects where name='proc_location_Paging')) –如果这个proc_location_paging存储过程存在则删除 drop proc proc_location_Paging go create

探究foreach对于迭代变量的封装性的研究

众所周知教科书上对于foreach之中的注释是在遍历过程中无法改变其遍历的元素例如声明一个数组 int[] ii={0,1,2,3}; foreach(int m in ii){ m = 3;//错误 “m”是一个“foreach 迭代变量”,无法为它赋值 Console.WriteLine(m); } 由上面可以知道,我们无法改变数组里面的值,但是foreach语句是为了集合而创建的,数组只是集合的一种,而其他集合会是怎么样的呢?C#里面为我们创建好了好几个集合类,List<T> ,Arra