在c#中,属性很好理解,一个属性就是一个成员,这个成员可以访问对象或类的字段。属性与域不同,属性并不表示存储地址,但属性具有访问函数。总的来说,属性是针对类或对象的某个成员变量进行操作,举例说明:假设有一个班级,那么这个班级的名称、学生总人数等都是这个班级的属性,用代码表示如下:
索引也是类的一个成员,它使得一个对象能够以与数组相同的方式进行访问,属性具有与域相似的访问,索引则具有与数组相似的访问。但是索引与数组不同的是,索引可以访问的是所有继承Array类的对象,也就是说,凡是一个类或对象中有链表结构的成员是,均可以通过索引的方式来进行对这些对象的访问。例如在上例中,一个班级中有很多学生,每个学生都有学号,当希望通过学生学号进行这个学生的访问时,就可以使用索引的方式,代码如下:
当我再次需要访问班级中某个学生的信息时,就可以直接通过索引器实现。
总结:可以这么理解,属性就是对某个对象或类中的某种类型的成员变量进行的存取操作的类成员,而索引则是对某个对象或类中的某个在内存中使用链表结构存储的成员变量进行锁定并进行存取操作的类成员。
在这里,有人不禁要生疑了,当类的成员变量为单项链表或双向链表进行存储时,如何使用索引器进行操作?这里,我们只需要直接调取该对象自身的赋值和取值操作即可,详细信息见本博客记录单项链表或双向链表实现的文章:
单向链表:http://blog.csdn.net/luxin10/archive/2010/12/10/6067863.aspx
双向链表:http://blog.csdn.net/luxin10/archive/2010/12/31/6109068.aspx