《C#本质论》读书笔记(16)构建自定义集合

16.1 更多集合接口

16.1.1 IList<T>与IDictionary<TKey,TValue>

16.1.2 ICollection<T>

16.2 主要集合类

16.2.1 列表集合:List<T>

16.2.2 全序

16.2.3 搜索List<T>

16.2.4 字典集合:Dictonary<TKey,TValue>

16.2.5 已排序集合:SortedDictionary<TKey,TValue>和SortedList<T>

16.2.6 栈集合:Stack<T>

16.2.7 队列集合:Queue<T>

16.2.8 链表:LinkedList<T>

16.3 提供索引器

16.4 返回null或者空集合

16.5 迭代器

16.5.1 迭代器的定义

16.5.2 迭代器语法

16.5.3 从迭代器生成值

16.5.4 迭代器和状态

16.5.5 更多的迭代器例子

16.5.6 将yield return语句放到循环中

16.5.7 取消更多的迭代:yield break

16.5.8 在单个类中创建多个迭代器

16.5.9 yield语句的要求

16.1 更多集合接口

集合类(这里指IEnumerable层次结构)实现的接口层次结构

16.1.1 IList<T>与IDictionary<TKey,TValue>

字典类一般只按照键进行索引,而不按位置索引。

列表“键”总是一个整数,“键集”总是从0开始的非负整数的一个连续集合。

解决数据存储或数据获取问题时,考虑  IList<T>(侧重位置索引获取值)与 IDictionary<TKey,TValue>(侧重通过键来获取值)。

16.1.2 ICollection<T>

IList<T>与IDictionary<TKey,TValue>都实现ICollection<T>。

包含两个成员:Count和CopyTo()。

16.2 主要集合类

共有5类关键的集合类,所有泛型类都位于 System.Collections.Generic命名空间。

16.2.1 列表集合:List<T>

List<T>具有与数组相似的属性。关键在于会自动的扩展,也可以显示调用TrimToSize()或Capacity来缩小。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

List<string> list = new List<string>();

// Lists automatically expand as elements

// are added.

list.Add("Sneezy");

list.Add("Happy");

list.Add("Dopey");

list.Add("Doc");

list.Add("Sleepy");

list.Add("Bashful");

list.Add("Grumpy");

list.Sort();

Console.WriteLine(

    "In alphabetical order {0} is the "

    + "first dwarf while {1} is the last.",

    list[0], list[6]);

list.Remove("Grumpy");

16.1.2 ICollection<T>

16.2.2 全序

16.1.2 ICollection<T>

16.2.3 搜索List<T>

16.1.2 ICollection<T>

16.2.4 字典集合:Dictonary<TKey,TValue>

16.1.2 ICollection<T>

16.2.5 已排序集合:SortedDictionary<TKey,TValue>和SortedList<T>

16.1.2 ICollection<T>

16.2.6 栈集合:Stack<T>

16.1.2 ICollection<T>

16.2.7 队列集合:Queue<T>

16.1.2 ICollection<T>

16.2.8 链表:LinkedList<T>

16.3 提供索引器

16.3 提供索引器

16.4 返回null或者空集合

16.4 返回null或者空集合

16.5 迭代器

16.5 迭代器

16.1.2 ICollection<T>

16.5.1 迭代器的定义

16.1.2 ICollection<T>

16.5.2 迭代器语法

16.1.2 ICollection<T>

16.5.3 从迭代器生成值

16.1.2 ICollection<T>

16.5.4 迭代器和状态

16.1.2 ICollection<T>

16.5.5 更多的迭代器例子

16.1.2 ICollection<T>

16.5.6 将yield return语句放到循环中

16.1.2 ICollection<T>

16.5.7 取消更多的迭代:yield break

16.1.2 ICollection<T>

16.5.8 在单个类中创建多个迭代器

16.1.2 ICollection<T>

16.5.9 yield语句的要求

来自为知笔记(Wiz)

时间: 2024-08-25 12:00:48

《C#本质论》读书笔记(16)构建自定义集合的相关文章

十六、C# 常用集合类及构建自定义集合(使用迭代器)

常用集合类及构建自定义集合 1.更多集合接口:IList<T>.IDictionary<TKey,TValue>.IComparable<T>.ICollection<T> 2.主要集合类:List<T>.IDictionary<TKey,TValue>.SortedDictionary<TKey,TValue>和SortedList<T> Stack<T>.Queue<T>.Linke

Javascript DOM 编程艺术读书笔记16/04/01

愚人节快乐 开始用webstorm了,随着学习深入,代码越来越长,因为不借助ide还真是挺难的 今天发现了一个严重的误区,text和textNode是完全不同的两个概念,之前没有特别注意,写代码很容易跳过createTextNode直接用parentNode.appendChild(text) 单独拎出来晒一晒,以后引以为戒 Javascript DOM 编程艺术读书笔记16/04/01

第一周读书笔记《构建之法》

构建之法读书笔记 #wmd-preview h1 { color: #0077bb } 构建之法读书笔记 沈三景 PB15061249 软件工程 读书笔记 前言 开学前两周,杂事颇多,没有充足的时间阅读<构建之法>,只能每天在睡前阅读约半小时,故只看了前三章.虽如此,但仍收获很多,下面就是我对前四章内容的一些看法和理解,如有理解偏颇之处,望见谅. 第一章 概论 本章主要介绍了软件工程是什么?软件工程的目标是什么?为了解决前一个问题,作者首先提出了两个等式: 程序 = 数据结构 + 算法 软件

第二周读书笔记《构建之法》

构建之法读书笔记 #wmd-preview h1 { color: #0077bb } 构建之法读书笔记 沈三景 PB15061249 软件工程 读书笔记 前言 本周阅读了构建之法的四.五两个个章节.这三个章节主要讲述了代码规范.结对编程.团队模式.开发流程. 第四章 两人合作 首先提到的是代码规范,程序员写的代码不仅要给机器看,还要给人看.好的代码规范能事半功倍.代码规范有分为代码风格规范和代码设计规范.代码风格规范是指让代码保持简明,让代码更易读.书中给出的规范是Tab键为4个空格,行宽为1

ArcGIS API for JavaScript 4.2学习笔记[16] 弹窗自定义功能按钮及为要素自定义按钮(第五章完结)

这节对Popups这一章的最后两个例子进行介绍和解析. 第一个[Popup Actions]介绍了弹窗中如何自定义工具按钮(名为actions),以PopupTemplate+FeatureLayer的形式测量要素的长度为例子进行介绍. 第二个[Custom popup actions per feature]则是上一个的升级,如果说上一个例子的功能是写死的,那么这个例子就把这个功能写活了.什么意思呢?上个例子的测距仅仅能测距,没有什么别的特别的.而这个例子以啤酒店的分布(点要素图层)为例,在自

闭包在.NET下的实现(编译器玩的小把戏)-----C#本质论读书笔记

参加工作以来,拜读过很多大作.有好多书读的时候感觉大彻大悟,不自觉的发出‘哦...’这样的感叹.但是随着杀猪刀(时间)不断的飞逝,不仅给我脸上带来了皱纹,还带走了不少前人总结和归纳的知识点和那些我还没来得及吸收的宝贵财富.好记性不如烂笔头,我决定开始写一些读书的笔记和工作上的心得,最好是两者能够结合起来,把知识真正的自己转化成自己的能力. 下面进入正题.闭包在程序员的日常工作几乎无所不在,当然不仅是工作,面试的时候经常也会有相关的题目.看过很多博客园上的朋友都有解释,每次重温都有‘哦...’的感

从构造函数说开去---C#本质论读书笔记

记得一年之前在写代码的时候问了小伙伴一个问题,我说:“你说如果我在声明的时候初始化,它会在对象初始化的哪个阶段被赋值?” 小伙伴想了想回答我:“还是在构造函数里面给变量初始化吧.” 程序当口,时间比较紧,没有空去验证一下这个问题,后来也就慢慢淡忘了. 这个假期翻开“C#本质论”正好里面也提到了这种情况,虽然只是一笔带过,但是也勾起了我的回忆,那今天就来记录一下这个疑问以及它延伸出来的一些知识点. 1.普通构造函数 public class ConstructionTest    {       

读书笔记6—构建之法

第六章--敏捷流程 1.      这一小节中有一个图表,对比了敏捷(Agile).计划驱动(Plan-driven).形式化的开发方法(Formal Method)的适用范围.里面提到的形式化的开发方法,其基本步骤是怎样的呢?为什么它能有极高的可靠性呢?下面是一些关于形式化方法特点的说明,从中可以看出它能力的缘由. 形式化方法建立在严格的数学基础上,其目标是希望能使系统具有较高的可信度和正确性,并能使系统具有良好的结构,使其易维护,关键是能较好地满足用户需求."形式化方法"一词虽然一

读书笔记(构建之法-11.19)

读构建之法有感: 今天在实验室读了构建之法书的第4章-两人合作,书上首先讲代码规范,一个程序员写的代码主要个人看,而在给人看的前提是要代码规范. 对我个人而言,其实看到没有规范的代码是看不下去的,自己曾经也犯过代码不规范的毛病,以后这种毛病要改掉. 下面说说结对编程,结对编程有如下的好处: 1.在开发层次,结对编程能提供很好的设计质量,两个人解决问题的能力更强. 2.对开发人员自身来说,能带来自信. 3.在企业管理层次上,有效的交流可以更好地应对人员的流动. 结对编程可以不断的进行复审,可以避免