26索引器--[Asp.Net]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace demo5
{
    public partial class suoyin : System.Web.UI.Page
    {
        //创建一个类,作为容器
        public class arr
        { 
            //申明一个字符串类型的数组
            private string[] myarr;

            private int szmax;
            //利用构造函数初始化数组
            public arr(int size)
            {
                //初始化重载数组的长度
                szmax = size;
                //将数组大小初始化为传进来的值长度
                myarr = new string[size];
                for (int i = 0; i < size; i++)
                {
                    myarr[i] = "空值";
                }
            }

            //构造索引器
            public string this[int j]//j是位置参数,参数类型是数组元素的位置,整型的。
            {
                get
                {
                    return myarr[j];//构造属性,get,set控制元素的读写。
                }
                set {
                    myarr[j] = value;
                }
            }


            public string this[string val]
            {
                get
                {//声明一个整型的变量,用于记录当前数组元素和传来值
                    int count = 0;
                    //循环
                    for (int i = 0; i < szmax; i++)
                    {//如果数组该项的值=传进来的值
                        if (myarr[i] == val)
                        {//count就要自增1
                            count++;
                        }
                    }
                    return count.ToString();
                }
                set {

                    for (int i = 0; i < szmax; i++)
                    {//如果数组该项的值=传进来的值
                        if (myarr[i] == val)
                        {//count就要自增1
                            myarr[i]=value;
                        }
                    }
                }
            }

        
        }

        //索引器例题
       
        protected void Page_Load(object sender, EventArgs e)
        {
            int size = 15;
            arr WRITE = new arr(size);
            WRITE[1] = "天轰穿";
            WRITE[2] = ".NET";
            WRITE[3] = "系列教程";

            for (int i = 0; i < size; i++)
            {
                Response.Write(WRITE[i]+"<br>");

            }

            Response.Write("<p>" +WRITE ["空值"]+"</p>");
            WRITE["空值"] = "抽只烟先...";
            for (int i = 0; i < size; i++)
            {
                Response.Write(WRITE[i] + "<br>");
            }
        }
    }
}

结果:

 

索引器定义:

  在一个类的内部,可以按照你的意愿来管理一组数据的集合。这些对象可以是类成员的有限集合,也可以是另外一个数组,或者是一些复杂的数据结构。

 

特别之处:

  在不少程序语言中,通常都是使用整数作为下标来访问作为数组元素的,但C#的索引指示器不仅能够做到这一点,而且还能够更进一步。 定义索引指示器时,可以带有多个参数,每个参数的类型可以不同。添加的参数由逗号隔开,同方法中的的参数表一样。索引指示器的合法的参数类型包括:整型,枚举类型和字符串。另外,索引指示器也可以被重载。在下面清单,我们修改了前面的程序,以便用来重载索引指示器 ,从而可以接受不同类型的参数

 

个人感受:

  感觉似懂非懂,囫囵吞枣吧。

posted @ 2015-05-08 11:42  ZeroWM  阅读(219)  评论(0编辑  收藏  举报