资源简介 单元11 ATM系统重构账户管理模块课 时本章目标: 使用System.Array操作数组 使用System.ArrayList对象 理解泛型集合类List对象 掌握Dictionary本章重点: 使用System.ArrayList对象 理解泛型集合类List对象 掌握Dictionary本章难点: 掌握Dictionary内容讲解:文件操作1、知识点引入在之前我们接触过Array类操作数组,进行排序。该类是基类,不能实例化该类。但是提供了CreateInstance()方法来构建数组2、知识点语法:Array arr=Array.CreateInstance(typeof(数据类型),长度)添加数组值:arr.SetValue(“值”,索引)获取数组中元素:getVale(下标)Array arr = Array.CreateInstance(typeof(string),5);arr.SetValue("金庸",0);arr.SetValue("古龙", 1);arr.SetValue("黄易", 2);arr.SetValue("梁羽生", 3);arr.SetValue("诸葛青云", 4);Console.WriteLine("数组元素总个数:" + arr.Length);Console.WriteLine("\n数组元素是:");for (int i = 0; i < arr.Length; i++){Console.WriteLine("第{0}个元素是:{1}",i+1,arr.GetValue(i));}Array.Sort(arr);Console.WriteLine("\n排序后数组为:");for (int i = 0; i < arr.Length; i++){Console.WriteLine("第{0}个元素是:{1}", i + 1, arr.GetValue(i));}}和数组相似的是c#集合,集合提供管理对象数组的高级功能,并且是一个特殊化的类,可以通过索引去访问集合成员。但是集合大小可以动态改变,并添加与删除元素集合提供的类很多:类 描 述ArrayList 提供适用于多数用途的一般集合功能,它允许动态添加和删除HashTable 存储键值对,这些键值对是根据键编码来安排的接 口 描 述ICollection 为所有集合定义大小、枚举器和同步方法IEnumerator 对整个集合的简单循环和列举IList 通过索引进行单独访问的对象的集合结 构 描 述DictionaryEntry 定义可以设置或检索的字典键值对我们了解ArryList类,该类是ArrayList的优化版本,区别在于ArrayList提供了大部分集合具有而Array没有,比如:ArrayList是可以改变元素个数,而Array不能ArrayList可以以通过ArrayList提供的方法在某个时间追加、插入或移出一组元素,而在Array中一次只能对一个元素进行操作Array可以通过下标设置,而ArrayList下标始终未0Array可以多维,而ArryList始终是一维ArrayList的语法:ArrayList 对象名称 = new ArrayList(初始容量);using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace ArrayTest{class ArrayListTest{static void Main(string[] args){ArrayList alName = new ArrayList();alName.Add("金庸");alName.Add("古龙");alName.Add("黄易");Console.WriteLine("\n数组列表容量为:{0},元素个数为:{1}",alName.Capacity,alName.Count);Console.WriteLine("\n请输入你想添加的武侠小说家:");string flag = null;while(true){string newNanme = Console.ReadLine();alName.Add(newNanme);Console.WriteLine("要继续吗?(y/n)");flag = Console.ReadLine();if (flag.Equals("n")){break;}}Console.WriteLine("\n请输入你想查找的武侠小说家:");while (true){string findName = Console.ReadLine();if (alName.Contains(findName)){Console.WriteLine("数组列表中包含{0}.", findName);}else{Console.WriteLine("数组列表中不包含你要查找的人");}Console.WriteLine("要继续吗?(y/n)");flag = Console.ReadLine();if (flag.Equals("n")){break;}}Console.WriteLine("\n数组列表中共包含下列武侠小说家:");foreach (string name in alName){Console.WriteLine(name);}}}}但是ArrayList是不安全,所以为了解决,c#提供了泛型集合,在放入集合的对象,是需要检查数据类型,发现不特定的会报错,其次泛型会提高性能,由于明确了数据类型,所以在存取数据时不会发生类型转换,特别是存取值类型时不会发生装箱和拆箱操作。泛型在Systeam.Collection.Generic的命名空间下,提供很多泛型泛型集合类 描 述List 一般用于替代ArrayList类,与ArrayList很相似Dictionary 存储键值对的集合泛型类SortedList 类似于Dictionary,但按键自动排序LinkedList 双向链表Queue 先进先出的队列类Stack 后进先出的堆栈类这里我们了解Dictionary泛型语法:Dictionary<数据类型, 数据类型> 实例名 = new Dictionary <数据类型, 数据类型>() ;其中,TKey表示键的数据类型,TValue表示值的数据类型。下面的示例演示了Dictionary类的用法:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Collections;namespace Demo{class Program{static void Main(string[] args){Dictionary dicstu = new Dictionary();//实例化四个学生类对象Student stu1 = new Student("张微", 1);Student stu2 = new Student("叶子", 2);Student stu3 = new Student("姚岚", 3);Student stu4 = new Student("刘琴", 4);//四个学生类对象添加到泛型集合类中dicstu.Add(stu1.Name,stu1);dicstu.Add(stu2.Name,stu2);dicstu.Add(stu3.Name,stu3);dicstu.Add(stu4.Name,stu4);foreach (string name in dicstu.Keys){Console.WriteLine(dicstu[name].ToString());}}}class Student{private string name; //学生姓名private int id; //学号public Student(string stuname, int stuid){this.name = stuname;this.id = stuid;}public string Name{get{return name;}set{this.name = value;}}public int Id{get{return id;} }public override string ToString(){return "姓名:" + name + ",学号:" + id;}}}教育改变生活(We Are Changing) 展开更多...... 收起↑ 资源预览