如题:! 本人在这个暑假在C#培训,现在在连接数据库之类的,可是我越学,很过概念就越模糊。就比如这个3个来说吧。
 比如:
 
 namespace abcd
{
    public class DocumentCollection : CollectionBase
    {
        public DocumentCollection() { }
        public DocumentCollection(DocumentCollection value)
        {
            this.AddRange(value);
        }
        public DocumentCollection(string[] value)
        {
            this.AddRange(value);
        }        public string this[int index]
        {
            get { return ((string)(List[index])); }
            set { List[index] = value; }
        }        public int Add(string value)
        {
            return List.Add(value);
        }
问题1:
比如这里的list(List.Add(value);),它在它的类里面根本就没有定义和调用?难道list是系统自定义的函数?再者就是,它把这个value值添加到哪里了?
问题2:
还有就是this.AddRange(value)中的this是不是指的是DocumentCollection的一个对象的一个实例?
问题3:
List[index] = value中value的值是系统的,可是它怎么来的??
谢谢大家,小弟不才。
分不多,但我会尽量给,但我希望答案不要 ctrl +c 然后再ctrl +v。

解决方案 »

  1.   

    1.可能是基类或基类的基类中定义的。
       添加到list中了。
    2.一个对象就是一个类的实例。
    3.这个是索引器的定义,value是使用索引器给list中某个成员赋值时,出现在“=”右边的值。
      

  2.   

    List<T>
    this[int index]
    索引器
    类中的对象可以像数组使用
    this声明索引器 ,this指代类对象本身,用于访问本类的所有常量、字段、属性和方法成员
      

  3.   

    this 就是对本身的一种调用 
    List 和IList 是在Collection命名空间里定义的的数组 ArrList可定义不定长数组 index是数组里的下标 数组的下标定义了该值。没什么深意 不是系统里面的值 系统里面只是定义了这么一个数组 数组里面的东西要靠自己添加进去。Add方法可以向数组里面任意添加类型相同的 数据。
      

  4.   

    问题1:
    List其实是基类(CollectionBase)里面的一个属性,使用base.List也一样。CollectionBase是一个用于实现集合的虚类,看名字就可以知道,DocumentCollection 这个类实现了CollectionBase,所以DocumentCollection 本身就是一个集合,那么value自然就是添加到这个集合本身了问题2:
    是的,this就是指当前这个对象;问题3:
    C#语言有两个函数--一个赋值函数(get),一个取值函数(set)
    set里面的value就是当你赋值时的这个“值”;例如
    DocumentCollection dc=new DocumentCollection();
    dc.Add("a");dc[0]="b";
    这时,在set段里的value就是"b";