public partial class ISAM : 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] = "null";//将数组元素全部赋值为字符"null";
            }
        }
        //下面我们来构造索引器。
        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++;
                    }
                }
                return count.ToString();
            }
            set {
                for (int i = 0; i < _szMax; i++ )
                {
                    if(_myArr[i] == val)
                    {
                        _myArr[i] = val;
                    }
                }
            }
        }    }
    protected void Page_Load(object sender, EventArgs e)
    {
        int size = 15;
        Arr temp = new Arr(size);
        temp[1] = "雨伞";
        temp[4] = ".Net2.0";
        temp[5] = "入门讲解";
        //for (int i = 0; i < size; i++ )
        //{
        //    Response.Write(temp[i]+"<br/>");
        //}
        //Response.Write("<hr/>");
        //Response.Write("<p>"+temp["null"]+"</p>");//这里可以计算出值为"null"的个数。        //下面怎么好像不行?
        temp["null"] = "喝点可乐先";//把所有为 "null" 值的全部改成 "喝点可乐先"        //for (int i = 0; i < size; i++ )
        //{
        //    if (temp[i] == "null")
        //    {
        //        temp[i] = "喝点可乐先";
        //    }
        //    else
        //    {
        //        temp[i] = "<font color='red'>" + temp[i] + "</font>";
        //    }
        //    Response.Write(temp[i] + "<br/>");
        //}
    }
}
上面temp["null"] = "喝点可乐先";好像不行?

解决方案 »

  1.   

    set
                {
                    for (int i = 0; i < _szMax; i++)
                    {
                        if (_myArr[i] == val)
                        {
                            _myArr[i] = value ;
                        }
                    }
                }
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 
    http://feiyun0112.cnblogs.com/
      

  2.   

    null和"null"是有区别的,temp["null"] 是索引这个属性的  public string this[string val]//--重载的参数为字符串型的,用于传入数组值。
            {
                get {
                    int count = 0;
                    for (int i = 0; i < _szMax; i++ )
                    {
                        if (_myArr[i] == val)
                        {
                            count++;
                        }
                    }
                    return count.ToString();
                }
                set {
                    for (int i = 0; i < _szMax; i++ )
                    {
                        if(_myArr[i] == val)
                        {
                            _myArr[i] = val;
                        }
                    }
                }
            }for (int i = 0; i < size; i++ )
            {
                if (temp[i] == null)
               {
                    temp[i] = "喝点可乐先";
                }
                else
                {
                    temp[i] = "<font color='red'>" + temp[i] + "</font>";
                }
               Response.Write(temp[i] + "<br/>");
            }
    //你的意思应该是这样的
      

  3.   

    我这样修改一下还是不行啊?
    这样都可以:Response.Write("<p>"+temp["空值"]+"</p>");//这里可以计算出值为"空值"的个数。public partial class ISAM : 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++;
                        }
                    }
                    return count.ToString();
                }
                set {
                    for (int i = 0; i < _szMax; i++ )
                    {
                        if(_myArr[i] == val)
                        {
                            _myArr[i] = val;
                        }
                    }
                }
            }    }
        protected void Page_Load(object sender, EventArgs e)
        {
            int size = 15;
            Arr temp = new Arr(size);
            temp[1] = "雨伞";
            temp[4] = ".Net2.0";
            temp[5] = "入门讲解";
            //for (int i = 0; i < size; i++ )
            //{
            //    Response.Write(temp[i]+"<br/>");
            //}
            //Response.Write("<hr/>");
            //Response.Write("<p>"+temp["空值"]+"</p>");//这里可以计算出值为"空值"的个数。        //下面怎么好像不行?
            temp["空值"] = "喝点可乐先";//把所有为 "null" 值的全部改成 "喝点可乐先"        //for (int i = 0; i < size; i++ )
            //{
            //    if (temp[i] == "空值")
            //    {
            //        temp[i] = "喝点可乐先";
            //    }
            //    else
            //    {
            //        temp[i] = "<font color='red'>" + temp[i] + "</font>";
            //    }
            //    Response.Write(temp[i] + "<br/>");
            //}
        }
    }
      

  4.   

    你们看看人家 一楼 太仔细了,问题解决了。
    我的:
    for (int i = 0; i  < _szMax; i++) 
                    { 
                        if (_myArr[i] == val) 
                        { 
                            _myArr[i] = val ; 
                        } 
                    } 
    一楼的:
    for (int i = 0; i  < _szMax; i++) 
                    { 
                        if (_myArr[i] == val) 
                        { 
                            _myArr[i] = value ; 
                        } 
                    } 
    服了吧。