• 天轰穿C#vs2010 04面向对象的编程之访问数组 【原创】


    小天:如果是申明和初始化的时候都没有给值,事后如何给?

           老田:你的意思是需要访问数组吧?数组在声明和初始化后,就可以使用索引器访问其中的元素了。不过需要注意数组只支持有整型参数的索引器。

    通过索引器传送元素号,就可以访问数组。索引器总是以0开头,表示第一个元素。可以传送给索引器的最大值是元素个数减1,因为索引从0开始。在下面的例子中,数组myInt37个整型值声明和初始化。用索引器0123456就可以访问该数组中的元素。

                int[] myInt3 = { 11, 12, 30, 53, 21, 38, 27 };

                //访问数组

                int i1 = myInt3[0];     //将数组myInt3中的第一项交给变量i1

                int i2 = myInt3[3];     //将数组myInt3中的第四项交给变量i2

                myInt3[2] = 18;         //修改数组myInt3中的第三项的值

                myInt3[5] = 90;         //修改数组myInt3中的第六项的值

    如果使用错误的索引器值(不存在对应的元素),就会抛出IndexOutOfRangeException类型的异常。如图5-3

                                              5-3

           小天:如果我们去访问一个没有值的数组项有什么效果?

           老田:自己试下不就知道,我是人,我又不是C#编译器。如下:

                int[] myInt5 = new int[7];

                myInt5[2] = 18;     //不会出错,因为这是为项赋值

                int i4 = myInt5[0]; //不会出错

           小天:数组才初始化,项中应该没有值啊,为什么不会出错呢?

           老田:因为myInt5在初始化分配内存空间的时候顺便也实例化了一个int类型放在这个空间中。所以这个时候项中是有值的,只不过是int类型初始化出来的0而已。

           小天:如果是那种使用直接给值进行初始化的数组,怎么能够知道到底有多少项呢?

           老田:如果不知道数组中的元素个数,则可以使用数组的Length属性。如下

                int[] myInt6 = { 11, 12, 30, 53, 21, 38, 27 };

                int i5 = myInt6.Length;

                MessageBox.Show(i5.ToString()); //猜猜我这个代码是写在什么类型程序的什么地方的?

           小天:如果我想依次取出数组中的全部项的值并显示出来,怎么做呢?

           老田:有两种形式,一种是使用for循环来遍历整个数组,第二种则是使用foreach语句迭代整个数组。下面分别使用了两种形式(其中一种for循环扩展了一些知识):

                //申明一个数组

    int[] myInt7 = new int[] { 11, 12, 30, 53, 21, 38, 27 };

                //简易的读出数组的值

                for (int i = 0; i < myInt7.Length; i++)

                {

                    Console.WriteLine(myInt7[i].ToString());

                }

    //由于上面的显示太简单了,我们将之拼成一个字符串来显示,完善如下

    //-------------申明一个字符串变量用来接收最后显示结果---------------

                string str = "";   

    //下一句申明循环从0开始,循环整数组项

    //可以尝试将小于改为小于等于,并用断点监视i的值

                for (int i = 0; i < myInt7.Length; i++)

                {

                    str += myInt7[i].ToString() + ",";

                }

                //因为str的值,最后会有一个逗号,下面这句代码则是将最后一个逗号的位置找出来并移除

                //如果不知道这句的意思,可以去MSDN找下RemoveLastIndexOf的解释

    str = str.Remove(str.LastIndexOf(','));

                label1.Text = str;    

    //-------------完善版for循环示例完毕---------------

               //下面实例为使用foreach来迭代整个数组,最终和for的简易实例一样,你自己来完善吧

                foreach (int v in myInt7)

                {

                    Console.WriteLine(v.ToString());

                }

           小天:我觉得foreach也太厉害了,是什么机制?还有数组中可以放的都是这些预定义类型吗?能放自定义类型不?

    老田:foreach语句利用了本章后面讨论的IEnumerableIEnumerator接口。下面来看看foreach的机制。

        本文章为天轰穿原创作品,转载请注明出处及作者。 

  • 相关阅读:
    Java内存区域
    spring学习之Bean
    记一次日本公司的Java面试
    java中打印输出数组内容的三种方式
    Java创建子类时构造器执行顺序
    转发&重定向
    Java继承
    GXOI&GZOI
    LCT能干啥???
    后缀自动机的一些应用
  • 原文地址:https://www.cnblogs.com/thcjp/p/2933736.html
Copyright © 2020-2023  润新知