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;

            }

     }

     }

    }

  • 相关阅读:
    jquery easy ui 学习 (8)basic treegrid
    jquery easy ui 学习 (7) TreeGrid Actions
    jquery easy ui 学习 (6) basic validatebox
    jquery easy ui 学习 (5) windowlayout
    jquery easy ui 学习 (4) window 打开之后 限制操纵后面元素属性
    提示“应用程序无法启动,因为应用程序的并行配置不正确”不能加载 System.Data.SQLite.dll
    visual studio 添加虚线的快捷键
    VS2010打开项目时,出现“已经在解决方案中打开了具有该名称的项目”问题的解决方案
    visual studio 编译时 出现 Files 的值 乱码
    微信 连接被意外关闭
  • 原文地址:https://www.cnblogs.com/haofaner/p/2295172.html
Copyright © 2011-2022 走看看