C#程序设计经典教程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C#程序设计经典 教程
1
第六章 集合、索引器与泛型
1. 总体要求 了解.NET类库中的集合类,初步掌握常用集合的创建和操作 方法。 理解索引器的概念,能区别索引器与属性,掌握索引器的定 义与使用。 了解泛型的相关概念,初步掌握泛型接口、泛型类、泛型属 性和泛型方法的使用。 2. 相关知识点 熟悉类和数组的定义和使用。 熟悉类的方法成员的定义与使用等基本操作。
Stack类提供了栈常用操作方法,包括在栈顶添加数据、移 除栈顶数据、返回栈顶数据、清空栈和检查是否包含某个 数据等,方法名分别为Push、Pop、Peek、Clear和 Contains。其中,Push和Pop每操作一次只能添加或删除
Fra Baidu bibliotek一个数据。
6.1.4 栈和队列
2.队列Queue
Queue类实现了先进先出的数据结构,这种数据结构把对象 放进一个等待队列中,当插入或删除对象时,对象从队列
(3)是否需要通过索引访问每个元素,只有ArrayList、
StringCollection等是从索引为零的元素开始逐个访问集合元素
。Hashtable、Dictionary通过元素的键(即元素名字)提供对元
素的访问。而NameValueCollection 类和SortedList 泛型类通过
其元素的从零开始的索引,或者通过其元素的键提供对元素的访
长因子的大小。
出队
a1
a2
入
a3
… an
队
队头
队尾
集合类的选择
选择集合类时,一般要考虑以下问题:
(1)是否需要一个序列列表,需要先进先出行为时可使用 Queue 队
列类,在需要后进先出行为时可使用 Stack栈类。
(2)是否需要随机访问集合中的元素,此时不能选择Queue 队列类、
Stack栈类、LinkedList 双向链表类
{ a [ I ] = 2*i; b.SetValue( 3*i , i );
接口中的方法:默认是 public abstract 的。
} foreach (int x in a)
console.Write( “{0} foreach (int x in b)
console.Write( “{0}
继承接口的类:必须实 ”现,x接);口中的所有属性和
object SynchRoot{get;} }
interface IEnumerable { // foreach 遍历的基础
IEnumerator Getenumerator(); }
interface IEnumerator
{
Object Current { get; }
bool MoveNext ();
6.1.1 集合概述
集合能随意调整大小,集合可以把一组类似的对象组合在一 起。任何类型的对象都可被组合到一个Object类型的集合 中,并通过C#的foreach语句来访问其中的每一个对象。操 作过程中MyClass 的对象与Object对象之间 MyClass mcObj;
装箱: Object obj = mcObj (无需显式转 换)
void Insert(int index,object value); … }
6.1.4 栈和队列
出栈
进栈
1.栈Stack
栈顶
Stack类实现了先进后出的数据结构,
an
…
这种数据结构在插入或删除对象时, 栈底
只能在栈顶插入或删除。
a2
创建栈对象的一般形式如下:
a1
Stack 栈名 = new Stack();
方法,否则该类是抽象 ”的,x。);
}
interface ICloneable { object Clone(); }
interface ICollection { int Count{ get; }
void CopyTo(Array array,int index); bool IsSynchronized{get;}
void Reset ()
}
interface IList : Collection, IEnumerable { int Add(objdect value);
void Clear(); bool Contains(object value);
int IndexOf(object value); void Remove(object key); void RemoveAt(int index);
//类体:实现了多个接口 //(数组操作的常用属性和方法,多为静态) }
public static void Main()
{ int [ ] a = new int [3];
Array b =Array.CreateInstance(typeof(int), 3);
for (int i=0; i<3; i++)
的一端插入,从另外一端移除。
队列可以用于顺序处理对象,因此队列可以按照对象插入 的顺序来存储。
创建队列对象的一般形式如下:
Queue 队列名 = new Queue([队列长度][,增长因子 ]);
其中,队列长度默认为32。增长因子默认为2.0,即每当队
列容量不足时,队列长度调整为原来的2倍,可重新设置增
第六章 集合、索引器与泛型
3. 学习重点 集合、索引器、泛型的定义与使用。 4. 学习难点 索引器的作用、定义与使用方法 泛型的概念和意义,泛型的定义和使用方法
第六章 集合、索引器与泛型
主要内容 6.1 集合 6.2 索引器 6.3 泛型
6.1 集合
6.1.1 集合概述 6.1.2 ArrayList 6.1.3 哈希表Hashtable 6.1.4 栈和队列
拆箱: mcObj = ( MyClass )obj (事先 装箱的)
对象类型的集合位于System.Collections命名空间;
6.1 数组类 Array 数组是简单集合
System.Array类是所有数组的基类
(特殊类,不能用于派生)
public abstract class Array: ICloneable,IList {
问。
(4)是否包含一个值、一个键和一个值的集合,还是一个键和多个值
的集合。其中,“一个值”的集合是一种基于 IList 列表接口派
1
第六章 集合、索引器与泛型
1. 总体要求 了解.NET类库中的集合类,初步掌握常用集合的创建和操作 方法。 理解索引器的概念,能区别索引器与属性,掌握索引器的定 义与使用。 了解泛型的相关概念,初步掌握泛型接口、泛型类、泛型属 性和泛型方法的使用。 2. 相关知识点 熟悉类和数组的定义和使用。 熟悉类的方法成员的定义与使用等基本操作。
Stack类提供了栈常用操作方法,包括在栈顶添加数据、移 除栈顶数据、返回栈顶数据、清空栈和检查是否包含某个 数据等,方法名分别为Push、Pop、Peek、Clear和 Contains。其中,Push和Pop每操作一次只能添加或删除
Fra Baidu bibliotek一个数据。
6.1.4 栈和队列
2.队列Queue
Queue类实现了先进先出的数据结构,这种数据结构把对象 放进一个等待队列中,当插入或删除对象时,对象从队列
(3)是否需要通过索引访问每个元素,只有ArrayList、
StringCollection等是从索引为零的元素开始逐个访问集合元素
。Hashtable、Dictionary通过元素的键(即元素名字)提供对元
素的访问。而NameValueCollection 类和SortedList 泛型类通过
其元素的从零开始的索引,或者通过其元素的键提供对元素的访
长因子的大小。
出队
a1
a2
入
a3
… an
队
队头
队尾
集合类的选择
选择集合类时,一般要考虑以下问题:
(1)是否需要一个序列列表,需要先进先出行为时可使用 Queue 队
列类,在需要后进先出行为时可使用 Stack栈类。
(2)是否需要随机访问集合中的元素,此时不能选择Queue 队列类、
Stack栈类、LinkedList 双向链表类
{ a [ I ] = 2*i; b.SetValue( 3*i , i );
接口中的方法:默认是 public abstract 的。
} foreach (int x in a)
console.Write( “{0} foreach (int x in b)
console.Write( “{0}
继承接口的类:必须实 ”现,x接);口中的所有属性和
object SynchRoot{get;} }
interface IEnumerable { // foreach 遍历的基础
IEnumerator Getenumerator(); }
interface IEnumerator
{
Object Current { get; }
bool MoveNext ();
6.1.1 集合概述
集合能随意调整大小,集合可以把一组类似的对象组合在一 起。任何类型的对象都可被组合到一个Object类型的集合 中,并通过C#的foreach语句来访问其中的每一个对象。操 作过程中MyClass 的对象与Object对象之间 MyClass mcObj;
装箱: Object obj = mcObj (无需显式转 换)
void Insert(int index,object value); … }
6.1.4 栈和队列
出栈
进栈
1.栈Stack
栈顶
Stack类实现了先进后出的数据结构,
an
…
这种数据结构在插入或删除对象时, 栈底
只能在栈顶插入或删除。
a2
创建栈对象的一般形式如下:
a1
Stack 栈名 = new Stack();
方法,否则该类是抽象 ”的,x。);
}
interface ICloneable { object Clone(); }
interface ICollection { int Count{ get; }
void CopyTo(Array array,int index); bool IsSynchronized{get;}
void Reset ()
}
interface IList : Collection, IEnumerable { int Add(objdect value);
void Clear(); bool Contains(object value);
int IndexOf(object value); void Remove(object key); void RemoveAt(int index);
//类体:实现了多个接口 //(数组操作的常用属性和方法,多为静态) }
public static void Main()
{ int [ ] a = new int [3];
Array b =Array.CreateInstance(typeof(int), 3);
for (int i=0; i<3; i++)
的一端插入,从另外一端移除。
队列可以用于顺序处理对象,因此队列可以按照对象插入 的顺序来存储。
创建队列对象的一般形式如下:
Queue 队列名 = new Queue([队列长度][,增长因子 ]);
其中,队列长度默认为32。增长因子默认为2.0,即每当队
列容量不足时,队列长度调整为原来的2倍,可重新设置增
第六章 集合、索引器与泛型
3. 学习重点 集合、索引器、泛型的定义与使用。 4. 学习难点 索引器的作用、定义与使用方法 泛型的概念和意义,泛型的定义和使用方法
第六章 集合、索引器与泛型
主要内容 6.1 集合 6.2 索引器 6.3 泛型
6.1 集合
6.1.1 集合概述 6.1.2 ArrayList 6.1.3 哈希表Hashtable 6.1.4 栈和队列
拆箱: mcObj = ( MyClass )obj (事先 装箱的)
对象类型的集合位于System.Collections命名空间;
6.1 数组类 Array 数组是简单集合
System.Array类是所有数组的基类
(特殊类,不能用于派生)
public abstract class Array: ICloneable,IList {
问。
(4)是否包含一个值、一个键和一个值的集合,还是一个键和多个值
的集合。其中,“一个值”的集合是一种基于 IList 列表接口派