请问,索引器类的定义中, List<string> _strList = new List<string>();怎么在定义的时候就要分配内存?

解决方案 »

  1.   

    是设置 容量大小?
    _strList.Capacity = 10
    内存空间大小 是 看你 添加的元素了。
      

  2.   


    class MyIndexer
        {
            private List<string> _strList = new List<string>();        public void AddString(string str)
            {
                this._strList.Add(str);
            }
            public string this[int index]
            {
                get
                {
                    return this._strList[index];
                }
                set
                {
                    this._strList[index] = value;
                }
            }    }这是自己定义的一个索引器,但是在类的定义里,用到了new ,在定义里也能分配内存吗,即使类还没有对象化?
      

  3.   

    _strList 作为MyIndexer类的字段,只有在MyIndexer类实例化时才会实例化,才会分配内存
    而不是你说的“在定义里分配内存”
      

  4.   

    那如果不设置我定义的字符串数组_strList的容量,可以无限制的增加元素吗?
      

  5.   

    那个new是什么意思,好像必须加上,但是普通字段定义就不能有
      

  6.   

    new就是调用类的构造函数进行实例化,字段可以在声明的时候不进行实例化的,可以把实例化放到需要的时候进行,在声明的时候就实例化的好处就是不用担心使用字段的时候会抛出“未将对象引用设置到对象实例”的错误。拿你这个例子说明,实例化不一定要在声明的时候进行:
    class MyIndexer
      {
      private List<string> _strList;
      public MyIndexer()
      {
          _strList = new List<string>(); 
      }
      public void AddString(string str)
      {
      this._strList.Add(str);
      }
      public string this[int index]
      {
      get
      {
      return this._strList[index];
      }
      set
      {
      this._strList[index] = value;
      }
      }  }
      

  7.   

    list不是数组,理论上本来就可以无限制增加元素,new因为这是个类咯,实例化了才能用