一、c# 集合基础

一、c# 集合基础

1 数组和集合

数组是创建和使用固定数量的强类型化对象。
集合则提供更为灵活的方式来操作对象组,可以动态的缩小和放大对象数组。

2 常见集合类型

2.1 System.Collections.Generic 类

此命名空间包含.Net平台实现的泛型集合,主要有以下几类:

说明
Dictionary<TKey,TValue>基于键/值对的集合
List<T>按索引访问的集合
Queue<T>队列
SortedList<TKey,TValue>基于IComparer实现按键进行排序的键值对集合
Stack<T>
2.2 System.Collections.Concurrent 类

此命名空间提供线程安全操作的集合类。

说明
ConcurrentDictionary<TKey,TValue>键值对集合的线程安全实现
ConcurrentQueue<T>队列的线程安全实现
ConcurrentStack<T>栈的线程安全实现
ConcurrentBag<T>无序集合的线程安全实现
BlockingCollection<T>为实现 IProducerConsumerCollection 的所有类型提供限制和阻止功能
IProducerConsumerCollection<T>生产者/消费者线程安全操作集合类
2.3 System.Collections 类

此命令空间提供非泛型集合的实现

说明
ArrayList表示对象的数组,这些对象的大小会根据需要动态增加。
Hashtable表示根据键的哈希代码进行组织的键/值对的集合。
Queue队列
Stack

3 实现集合的几个接口

3.1 IEnumerable

该接口是所有使用c# foreach遍历时都必须实现的接口,该接口只有一个方法,就是返回一个实现IEnumerator接口的对象的GetEnumerator()方法。

public interface IEnumerable
{
	IEnumerator GetEnumerator()
}
3.2 IEnumerator

该接口返回一个枚举器,枚举器是遍历集合的。

public interface IEnumerator
{
	//移动到下一个元素,并返回是否可移动到下一元素
	bool MoveNext();
	//当前元素。
	object? Current{ get; }
	//重置,返回到第一个元素之前
	void Reset();
}
3.3 IComparer

该接口提供比较两个对象的方法,主要用于排序。

public interface IComparer
{
	//比较
	int Compare(object? x,object? y);
}
3.4 IEqualityComparer

该接口用于比较对象是否相等。

public interface IEqualityComparer
{
	//判断两个对象是否相等
	bool Equals(object? x,object? y);
	//返回对象的哈希代码
	int GetHashCode(object obj);
}
3.5 ICollection

该接口定义非泛型集合的大小及同步访问。

public interface ICollection : IEnumerable
{
	//拷贝数组
	void CopyTo(Array array,int index);
	//集合元素数量
	int Count { get; }
	//同步对象
	object SyncRoot { get; }
	//是否同步访问
	bool IsSynchronized { get; }
}
3.6 IList

该接口定义按索引进行访问的非泛型集合。

public interface IList : ICollection,IEnumerable
{
	//按索引访问的索引器
	object? this[int index] { get;set; }
	//添加元素
	int Add(object? value);
	//是否包含元素
	bool Contains(object? value);
	//清空
	void Clear();
	//是否只读
	bool IsReadOnly { get; }
	//是否固定大小
	bool IsFixedSize { get; }
	//查找元素索引
	int IndexOf(object? value);
	//插入
	void Insert(int index,object? value);
	//按对象值移除
	void Remove(object? value);
	//按索引移除
	void RemoveAt(int index);
}
3.7 IDictionary

该接口定义实现键/值对(字典类)的非泛型集合。

public interface IDictionary : ICollection,IEnumerable
{
	//索引器
	object? this[object key] { get;set;}
	//键的集合
	ICollection Keys { get; }
	//值的集合
	ICollection Values { get; }
	//是否包含
	bool Contains(object key);
	//添加元素
	void Add(object key,object? value);
	//清除
	void Clear();
	//是否只读
	bool IsReadOnly { get; }
	//是否固定大小
	bool IsFixedSize { get; }
	//字典枚举器
	IDictionaryEnumerator GetEnumerator();
	//移除元素
	void Remove(object key);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值