‫这节课你将学习泛型和非泛型集合, 这是C-sharp中最重要的主题之一｡
‫所以首先, 我们需要了解什么集合像数组｡
‫集合是我们可以用来同时存储多个对象的类, 或者是对象的集合, 因此命名为集合｡
‫与数组不同, 集合不限于一种类型的对象｡
‫因此, 在集合中, 我们可以存储任意多的对象类型｡
‫此外, 集合的大小并不像比赛那样固定｡
‫根据它们的长度, 我们可以在进行时向它们添加元素, 集合将调整其大小｡
‫在这个例子中, 它不叫长度, 而是计数, 我们将看看如何使用它｡
‫那么, 我们为什么需要集合？
‫好吧, 让我们想象一下这样的场景：我们正在为一所学校构建考勤系统,
‫我们希望随着时间的推移动态地向系统中添加学生｡
‫一旦我们定义了student类并开始创建student类型的对象, 我们将面临一个问题｡
‫在将它们存储在数组中时, 我们将如何存储它们是一个坏主意, 原因如下｡
‫首先, 数组的大小是固定的, 所以如果我们创建一个包含500个学生的数组, 那么我们不能有更多的学生｡
‫第二, 如果我们决定向系统中添加其他类型的对象, 如教师､ 雇员等, 该怎么办？
‫因为数组的大小是固定的, 并且只能接受一种类型, 所以我们可以使用集合来解决这个问题｡
‫因此, 我们使用它们来更有效地存储､ 管理和操作对象组｡
‫所以集合可以用来在一个组中做很多操作｡
‫例如, 添加､ 删除､ 替换对象, 搜索特定对象, 甚至复制对象｡
‫所以现在有两种不同类型的集合,
‫非泛型集合, 我们可以使用它们来存储任何类型的对象, 它们位于命名空间中的系统集合内｡
‫然后是泛型集合, 它仅限于一种类型的对象｡
‫因此, 如果我们确定不需要存储不同类型的对象, 就使用它们｡
‫并且它们位于系统点集合点泛型中｡
‫在这个命名空间中, 非泛型集合, 让我们看一些例子｡
‫这里我们有一个int, num, equal, 1, 是5, 然后我们有一个float, num, 2, 是315,
‫比如说, 字符串name, 是Dennis, 然后我们创建一个新的数组列表, 我的数组列表, 我们把num, 1,
‫加到它上面, 然后我们把num, 2, 加到它上面, 我们可以给它加一个名字.
‫所以你在这里看到它们是非泛型的, 这意味着它允许我们使用不同的类型｡
‫所以一种类型是整数, 另一种类型是浮点数.
‫第二个是浮点数, 名字是字符串.
‫所以我们可以把所有这些都加到数组列表中｡
‫它们是不同的类型｡
‫所以你看, 我们使用ADD方法来将它们添加到列表中｡
‫现在, 我们可以使用之前讨论过的方法, 即复制､ 删除､ 替换等等｡
‫我们可以在这里使用它们, 也可以和这个数组列表一起使用, 因为数组列表是一个非泛型集合｡
‫现在我们可以使用for each方法遍历数组列表中的所有元素, 因为它不是一个特定的类型｡
‫所以数组列表中的元素不是一种特定的类型｡
‫我们需要在我的数组列表中使用object元素, 我们不能使用int, 因为里面也有浮点数和字符串｡
‫我们不能使用float, 因为还有无辜的字符串｡
‫这就是为什么我们要使用object, 这是一种非常常用的类型, 它允许所有类型｡
‫对象类型基本上合并了所有其他类型｡
‫现在我们来看看泛型集合｡
‫所以这一个会有动物一, 动物二, 动物三, 它会从类型列表中删除｡
‫我们把它叫做我的清单｡
‫所以你可以看到这个列表只能存储字符串｡
‫所以我们要创建这个字符串列表｡
‫而且由于列表是一个泛型集合, 它实际上只能保存一种类型的对象｡
‫因此, 我们必须在定义该列表时指定该类型｡
‫因此, 我们在这里指定其类型为string｡
‫所以我们传递给它的数据或者保存在里面的数据, 只能是字符串类型, 用尖括号括起来.
‫在这个例子中, 您可以看到这样尖括号字符串｡
‫所以从技术上讲, 我们可以说我的列表是类型列表､ 字符串和本章即将推出的视频的集合｡
‫我们将探索不同类型的泛型和非泛型集合, 并讨论每种类型的优点以及如何和何时使用它们｡
‫这只是对这两个主题的一个快速介绍｡
‫我们会看到一些例子, 然后它会变得更清楚｡
‫好吧, 我会的
‫下一段视频再见｡