zoukankan      html  css  js  c++  java
  • 也谈索引器

    一:索引器允许类和结构的实例按照与数组相同的方式进行索引,索引器类似与属性,不同之处在于他们的访问器采用参数。被称为有参属性。

    如:简单索引器实例:

     using System;

     using System.Collections.Generic;

     using System.Linq; using System.Text;

    namespace ConsoleApplication2

     {

           class Program

               {

                     static void Main(string[] args)

            {

               IndexClass Temple = new IndexClass();

               Temple[0] = "孙三";

              Temple[1] = "业四";

              Temple[2] = "宝五";

              Console.WriteLine("冠位大爷为:{0}",Temple[0]);

               Console.WriteLine("亚位大爷为:{0}", Temple[1]);

               Console.WriteLine("季位大爷为 :{0}", Temple[2]);

               Console.ReadLine();

            }

      }

         class IndexClass

           {

            private string[] name = new string[100];

            public string this[int index]

             {

               get {

                       if  (index=100)

                         return name[0];

                      else

                           return name[index];

                 }

             set

                {

                      if   (index < 0 || index > 100)

                        name[0] = value;

                      else

                        this.name[index] = value;

                }

             }

           }

    }

    上例中的索引器与数组有些相似:但是索引器与数组是有区别的体现在如下:

     1)索引器的索引值不受类型的限制。而用来访问数组的索引值一琮是整数。

     2)索引器允许重载,一个类可以有多个索引器。

    3)索引器允许类和结构的实例按照与数组相同的方式进行索引,索引器类似于属性,不同之处在于他们的访问器采用参数,被称为有参属性。

     4)属性以名称来标识,索引器以函数签名来标识。索引器可以被重载,属性则不可以被重载。属性可以为静态的,索引器属于实例成员,不能被声明为static。

     而且索引器可以是多参的也就是作为索引的参数可以为多个如下:

     using System;

     using System.Collections.Generic;

     using System.Linq; using System.Text;

    using System.Collections;

     namespace ConsoleApplication2

    {

       class Program

          {

          static void Main(string[] args)

            {

              ScoreIndex si = new ScoreIndex();

               si["张三", 1] = 90;

               si["张三", 2] = 100;

               si["张三", 3] = 98;

               si["李四", 1] = 94;

               si["李四", 2] = 88;

               si["李四", 3] = 96;

               Console.WriteLine("张三的编号为1 的成绩为:{0}",si["张三",1]);

              Console.WriteLine("张三的所有成绩为: ");

               ArrayList arrTemp; arrTemp=si["张三"];

               foreach (IndexClass item in arrTemp)

                 {

                  Console.WriteLine("姓名:"+item.Name+" 课程编号: "+item.CourseId+" 成绩: "+item.Score+"\r\n");

                 }

              Console.ReadLine();

             }

    }

       class IndexClass

        {

         private string _name;

         private int _courseId;

         private int _score;

        public IndexClass(string _name,int _courseId,int _score)

           {

             this._name = _name;

             this._courseId = _courseId;

             this._score = _score;

           }

         public string Name

           {

            get { return _name; }

            set { _name = value; }

           }

        public int CourseId

          {

            get { return _courseId; }

             set { _courseId = value; }

           }

        public int Score

        {

           get { return _score; }

           set { _score = value; }

         }

     }

      class ScoreIndex

       {

        private ArrayList arr;

         public ScoreIndex()

          {

            arr = new ArrayList();

          }

       public int this[string _name, int _courseId]

        {

           get

            {

                 foreach (IndexClass item in arr)

                   {

                       if   (item.Name == _name && item.CourseId == _courseId)

                         {

                          return item.Score;

                       }

                   }

                 return -1;

             }

           set

             {

                 arr.Add(new IndexClass(_name,_courseId,value));

              }

          }

            //重载索引器

           public ArrayList this[string _name]

            {

               get {

                     ArrayList temp = new ArrayList();

                     foreach (IndexClass a in arr)

                    {

                         if (a.Name == _name)

                           {

                               temp.Add(a);

                           }

                    }

                     return temp;

            }

     }

     }

    }

  • 相关阅读:
    银行业务调度系统
    Apache虚拟主机配置
    linux下 redis 启动
    linux下mysql 启动命令
    linux 查看磁盘空间大小
    基于微信地理位置的附近商家距离坐标数据查询方法
    mysql表无权限访问
    linux用户操作
    Java中Date各种相关用法
    spring 定时任务的 执行时间设置规则
  • 原文地址:https://www.cnblogs.com/haofaner/p/2295172.html
Copyright © 2011-2022 走看看