您的位置:首页 > 职场人生

黑马程序员——C#面向对象之索引器

2013-05-02 12:02 141 查看
-------Windows Phone 7手机开发.Net培训、期待与您交流! -------
     -->C#面向对象——索引器,开始学完之后,感觉要写得这么麻烦,有什么用啊,可是当与普通使用集合之后,索引器的作用那是没话说,太给力了。

     -->集合——ArrayList具有很强的通用性,集合方法:Add与AddRange、Insert与InsertRange、Remove与RemoveAt、Sort与Reverse、IndexOf与LastIndexOf、Contains等,集合可以通过索引来访问,但是有局限性,但是通过索引器就不一样了。

     -->集合与索引器的比较:

     -->集合——ArrayList的例子

     class Person

     {

         private string name;

         private char gender;

         private int age;

         public Person(string name, int age, char gender)

         {

                    this.name = name;

                    this.age = age;

                    this.gender = gender;

         }

         public void SayHello()

         {

                    Console.WriteLine("大家好,我叫{0},今年{1}岁了,是一名{2}生!",name,age,gender);

         }

     }

     //使用集合——ArrayList

    ArrayList al = new ArrayList();

    al.Add(new Person("zhangsan",23,'男'));

    al.Add(new Person("xiaolan",34,'女'));

    //遍历,让集合al中的所有对象执行方法      

    for (int i = 0; i < al.Count; i++)

    {

         //由于al[i]是object类型的,所以要强制转换

         Person p = (Person)al[i];

         p.SayHello();

         //或者用((Person)al[i]).SayHello();

    }

     -->索引器的例子

    class Person2

    {

        ArrayList al;

        public Person2()

        {

            al = new ArrayList();

        }

        public int Count

        {

            get { return al.Count; }

        }

        //只写一个添加和索引

        public int Add(Person p)

        {

            return al.Add(p);

        }

        public Person this[int index]

        {

            get { return (Person)al[index]; }

            set {al[index]=value;}

        }

    }

    //使用索引器

        Person2 p2 = new Person2();

        p2.Add(new Person("zhangsan",23,'男'));

        p2.Add(new Person("xiaolan",33,'女'));

        for (int i = 0; i < p2.Count; i++)

        {

                p2[i].SayHello();

        }

     -->((Person)al[i]).SayHello();与p2[i].SayHello();两者的代码比较可读性还是理解难度都是显而易见的。

     -->索引器语法:

         [访问修饰符]  返回类型  this[索引类型 索引名] //this在类的内部,代表当前实例,引用。

         {

                 //get或set方法体

         }

     -->索引器是为了方便将类、结构等“非数组”当做“数组”来使用,用于封装内部集合的内容,可以包括任何东西。

-------Windows Phone 7手机开发.Net培训、期待与您交流! -------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息