常用的主要有八大类型:1.数组(Array)2.栈(Stack)3.链表(Linked List)4.图(Graph)5.散列表(哈希表)(Hash)6.队列(Queue)7.树(Tree)8.堆(Heap)
在.NET中数组是一个抽象类继承了ICloneable, IList, IStructuralComparable, IStructuralEquatable 四个接口。
public abstract class Array : ICloneable, IList, IStructuralComparable, IStructuralEquatable
1、ICloneable: 定义Clone方法接口,创建一个新对象,该对象是实例化对象的副本。此对象可以是深度拷贝或浅拷贝取决于克隆的实现。默认值克隆的对象支持执行浅层复制。
2、IList:IList是对象的有序集合。确切的顺序取决于列表的实现,范围从排序顺序到插入顺序
(1) 、索引器
Object this[int index] {get; set;} Item属性提供了读取和编辑列表中条目的方法
索引器具体实现可阅读官网链接:
Using Indexers - C# Programming Guide | Microsoft Docs
(2) 、数组操作方法和属性
//将项目添加到列表中。列表中的确切位置为
//依赖于实现,因此虽然ArrayList可能总是插入
//在最后一个可用的位置,SortedList很可能不会。
//返回值是新元素插入的位置。
int Add(Object value);
// 返回列表是否包含特定项。
bool Contains(Object value);
// 从列表中删除所有项目。
void Clear();
//获取一个值,该值指示 IList 是否为只读。
bool IsReadOnly { get; }
// 获取一个值,该值指示 Array 是否具有固定大小。
// 对于所有数组,此属性始终为 true。
bool IsFixedSize{ get;}
//返回列表中特定项的索引。
//如果项目不在列表中,则返回-1。
int IndexOf(Object value);
//从列表中删除项目。在位置索引处向列表中插入值。
//索引必须为非负且小于或等于列表中的元素数。
//如果索引等于数字,则将值追加到末尾。
void Insert(int index, Object value);
// 从列表中删除项目。
void Remove(Object value);
// 删除位置索引处的项目。
void RemoveAt(int index);
ICollection:同时IList继承ICollection接口
//CopyTo将集合复制到数组中,从特定索引到数组中。
void CopyTo(Array array, int index);
//集合中的项目数。
int Count{ get; }
//SyncRoot将返回用于同步的对象
Object SyncRoot{ get; }
//此集合是否已同步(即线程安全)?
bool IsSynchronized{ get; }
IEnumerable:同时ICollection继承IEnumerable接口
如果需要支持VB的foreach语义,请实现此接口。此外,支持枚举器的COM类也将实现此接口 IEnumerator GetEnumerator()所有枚举器的基本接口,提供了一种简单的方法,对集合进行迭代。 bool MoveNext(); Object Current { get; } void Reset();
3、IStructuralComparable: 支持集合对象的结构化比较.
Int32 CompareTo(Object other, IComparer comparer);
4、IStructuralEquatable:定义用于支持比较对象是否在结构上相等的方法。
Boolean Equals(Object other, IEqualityComparer comparer);
int GetHashCode(IEqualityComparer comparer);