C#笔记 其三
自定义集合
集合接口
IList<T>
列表
关键词:变长数组、有序集合、任意访问、索引
常用方法:
list.Add(T); list.Remove(); list.RemoveAt(int); list.Sort(); list.Sort(IComparer<T>); list.Contains(T); list.IndexOf(T); list.LastIndexOf(T); list.BinarySearch(T); list.FindAll(Predicate<T>); list[int]; foreach (T item in list);
IDictionary<TKey, TValue>
字典
关键词:键值对
常用方法:
dictionary.Add(TKey, TValue); dictionary.Remove(TKey); dictionary[TKey]; foreach (KeyValuePair<TKey, TValue> pair in dictionary); dictionary.Keys; dictionary.Values;
SortedDictionary<TKey, TValue> & SortedList<T>
已排序集合
前者按键排序,后者按值排序,二者分别是IDictionary<TKey, TValue>
和IList<T>
的派生
sortedDictionary.Keys
返回IList<TKey>
,sortedDictionary.Values
返回IList<TValue>
Stack<T>
栈
Push()
和Pop()
为压入和弹出
Peek(), Contains(), foreach
都不会改变栈
Queue<T>
队列
Enqueue()
和Dequeue()
为入队和出队
Peek(), Contains(), foreach
都不会改变队列
LinkedList<T> & LinkedListNode<T>
双向链表
索引器
使用关键词this
跟方括号中的参数列表
public class A<TKey, TValue> { public TValue this[TKey key] { // 索引跟属性相似 get { ... } set { ... } } // 可以重载和使用多个参数 public TValue this[int i, int j] { get { ... } } // 可变参数也行 public IList<T> this[params int[] indexes] { get { ... } } }
实际上索引器就是名为
Item
的特殊属性,所以不能同时创建索引器和Item
属性,除非另外指定索引器名称
迭代器
IEnumerable<T>
实现了此接口的类和方法可以使用foreach
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义