您的位置:首页 > 编程语言 > C#

C#面向对象知识点(for-foreach|装箱-拆箱)

2013-08-14 15:03 190 查看
     -->C#面向对象——for循环,大家用的非常多,也用的非常熟练,但是既然有foreach,就说明foreach也有它的好处,现比较foreach与for的利弊。

     -->foreach语法:

         foreach(类型名 临时变量 in 要遍历的对象)

         {

              Console.WriteLine(临时变量);//这里只是一种功能,其实这对大括号就是执行循环体,只不过只有临时变量可以用,要遍历的对象不”参加“循环体中的运算。

         }

         例子:string[] strs=new string[3]{"a","b","c"};

                    foreach(string temp in strs)

                    {

                          Console.Write();

                    }

                    //显示abc。

     -->foreach执行原理:首先在中,找总数strs.Length、找数据类型string、找到开始的位置,然后将指针指向str[0]上面,假设是"0"的位置。开始遍历对象,指针向下移动一位,到1的位置,返回数据给临时变量,如果数据符合类型名条件就执行循环体,否则就结束整个循环。

     -->for语法及使用规则。

     -->foreach循环特点:foreach遍历数据是通过使用一个临时变量,将值复制一份放到临时变量中,再执行循环体,因此无法访问到真正的数据,故是只读,不可写;是否继续循环是由数据类型决定的,一旦开始就一直执行循环体,直到遍历完所有内容;

     -->for循环特点:for循环是通过对象名加索引来执行循环体;for循环呢可以控制循环进度、位置和顺序;for循环可以直接访问到数组中的内容,故可以修改数据。

     -->foreach循环一般用在遍历数组的时候使用,因为比较方便,而且对于没有顺序的数据即乱序数据的时候也用foreach循环,更多是用在集合中。

     -->for循环用于需要对数据进行批量操作的时候,比如将数组中的每个内容加上某些东西。for循环除了一些特殊场合不能使用,其它地方一般都会使用。

     -->C#面向对象——装箱与拆箱。装箱是值类型——>object类型的过程;拆箱是object类型——>值类型的过程。

     -->例子:

          int num=10; //在线性栈开辟空间进行的操作。

          object obj=num;//装箱的过程,是在托管堆中进行的,在托管堆中开辟一块内存空间,存放num复制过来的数据,是复制过来的数据。

          int num2=(int)obj;//拆箱的过程,是将拖管堆中的数据取出来,再强制转换赋值给num2。

          //但是如果装箱的是一个变量的地址,即将一个引用类型的数据复制过来并装箱,如果修改原来的数据,那么拆箱之后的数是被修改过的数据。

          //装箱与拆箱,能够保证值类型的数据不被修改,”保存“了数据;但是对于引用类型的数据,就无法保证其安全性了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: