《ASP NET程序设计及实践》课件04-第4章 数组与集合_第1页
《ASP NET程序设计及实践》课件04-第4章 数组与集合_第2页
《ASP NET程序设计及实践》课件04-第4章 数组与集合_第3页
《ASP NET程序设计及实践》课件04-第4章 数组与集合_第4页
《ASP NET程序设计及实践》课件04-第4章 数组与集合_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-1-掌握C#中数组的定义掌握Array类的使用了解集合的概念掌握类库中集合类的使用目标-2-数组-1数组是具有相同数据类型的项的有序集合数据类型[]数组

名;int[]a; //声明一个整型数组a数组的声明:例如:数组的初始化(分配内存空间):int[]myArray;//第一种初始化方式myArray=newint[4];//第二种初始化方式int[]myArray=newint[4];//第三种初始化方式int[]myArray=newint[4]{4,7,11,2};//第四种初始化方式int[]myArray=newint[]{4,7,11,2};//第五种初始化方式int[]myArray={4,7,11,2};-3-数组-2数组元素的访问数组名[索引值]索引值只能为整数,且从0开始,最大值为数组长度减1

classArrayDemo{ staticvoidMain(string[]args){ int[]myArray=newint[]{4,7,11,2}; intv1=myArray[0];//读取第一个数组元素并赋值给v1 intv2=myArray[1];//读取第二个数组元素并赋值给v2 myArray[3]=44;//为指定元素赋值;

//通过for循环打印数组元素

for(inti=0;i<myArray.Length;i++){ Console.WriteLine(myArray[i]); } }}示例:-4-数组-3任务描述:定义一个整型数组,接收10个数,统计偶数和奇数的个数。classArrayTest{ staticvoidMain(string[]args){ int[]ary=newint[10];//定义一个大小为10的数组

inteven=0;//偶数个数

intodd=0;//奇数个数

//使用异常处理用户输入非数字时的错误提示

try{ //使用for循环遍历数组

for(inti=0;i<ary.Length;i++){ intn=i+1; Console.Write("请输入第"+n+"个数字:"); //获取用户输入的数字,并进行类型转化

ary[i]=Convert.ToInt32(Console.ReadLine()); } for(inti=0;i<ary.Length;i++){ //如果被2整除则为偶数

if((ary[i]%2)==0){ even++; }else{ odd++; } } Console.WriteLine("偶数的个数为:"+even); Console.WriteLine("奇数的格式为:"+odd); }catch{ Console.WriteLine("格式错误!"); } }}使用ReadLine方法获取的用户输入字符,默认为字符串形式,需要显示的转换为int类型,才能进行奇偶数的运算。-5-Array类-1Array类是公共语言运行库中所有数组的基类,提供了创建、操作、搜索和排序数组的方法。Array类中常用属性:属性描述Length返回数组元素个数,如果需要返回一维中元素个数可使用GetLength()方法LongLength若数组包含的元素个数超过了32位int值的取值范围,则使用longlength来获取元素个数Rank获取数组的维数-6-Array类-2Array类用于数组的方法:方法名描述ConvertAll静态方法,将一种类型的数组转换为另一种类型的数组Copy静态方法,将一个Array的一部分元素复制到另一个Array中,并根据需要执行类型强制转换和装箱CopyTo将当前一维Array的所有元素复制到指定的一维Array中CreateInstance静态方法,初始化Array类的新实例Exists静态方法,确定指定数组包含的元素是否与指定谓词定义的条件匹配Find静态方法,搜索与指定谓词定义的条件匹配的元素,返回Array中的第一个匹配项FindAll静态方法,检索与指定谓词定义的条件匹配的所有元素GetLowerBound获取Array中指定维度的下限GetUpperBound获取Array的指定维度的上限IndexOf静态方法,返回一维Array或部分Array中某个值第一个匹配项的索引LastIndexOf静态方法,返回一维Array或部分Array中某个值的最后一个匹配项的索引Resize静态方法,将数组的大小更改为指定的新大小Sort静态方法,对一维Array对象中的元素进行排序。-7-Array类-3创建Array数组:使用Array类的静态方法CreateInstance()来创建数组。示例:classCreateInstanceDemo{ staticvoidMain(string[]args) { //创建一个整型数组,长度为6 Arraya=Array.CreateInstance(typeof(Int32),6); Console.WriteLine("数组的维数:"+a.Rank); Console.WriteLine("数组的长度:"+a.Length); Console.WriteLine("数组中的初始值:"); foreach(inteina) { Console.Write(e+""); } Console.WriteLine(); //给数组的第1个元素赋值为10 a.SetValue(10,0); //给数组的第2个元素赋值为20 a.SetValue(20,1); Console.WriteLine("数组中的数据:"); foreach(inteina) { Console.Write(e+""); } Console.WriteLine(); }}通过SetValue()方法指定数组元素的值-8-Array类-4数组的复制:值类型数组:复制所有的值引用类型数组:不复制对象元素,而只复制对象引用,引用还是引用同一个对象classArrayCopyDemo{ … staticvoidMain(string[]args){ //分别创建并实例化int类型的和Object类型的数组

int[]myIntArray=newint[5]{1,2,3,4,5}; Object[]myObjArray=newObject[5]{26,27,28,29,30}; //分别输出两个数组的初始值

… //复制int类型数组中的第1,2两个值到Object类型数组中

Array.Copy(myIntArray,myObjArray,2); //分别输出两个数组的值

Console.WriteLine("\n复制int数组中的1,2两个值到Object类型数组后两个数组的值,"); Console.Write("int类型数组的值:"); PrintValues(myIntArray); Console.Write("Object类型数组的值:"); PrintValues(myObjArray); //复制Object类型数组中的最后两个值到int类型数组中

Array.Copy(myObjArray,myObjArray.GetUpperBound(0)-1, myIntArray,myIntArray.GetUpperBound(0)-1,2); //分别输出两个数组的值

… }}通过Copy()方法复制数组-9-类库中的集合-1.NET提供了对堆栈、队列、列表和哈希表这些数据存储和检索的专用访问类,这些类统称为集合类。集合类特点:集合类定义在System.Collections或System.Collections.Generic命名空间中。大多数集合类都派生自ICollection、IComparer、IEnumerable、IList、IDictionary和IDictionaryEnumerator接口以及它们的等效泛型接口。使用泛型集合类可以提供更高的类型安全性,在某些情况下还可以提供更好的性能,尤其是在存储值类型时,这些优势会体现得更明显。

-10-类库中的集合-2常用的集合类:ArrayList类Stack类Queue类Hashtable类SortedList类集合类具有一些公共的操作方法:方法说明Clear()从集合中移除所有元素Clone()创建集合的浅表副本Contains()确定某元素是否在集合中CopyTo()将集合或它的一部分复制到一维数组中ToString

()返回表示当前集合的字符串-11-ArrayList类-1ArrayList类主要用于对数组中的元素进行处理ArrayList类中常用的方法如下:方法说明Add()将对象添加到ArrayList的结尾处。Insert()将元素插入ArrayList的指定索引处。Remove()从ArrayList中移除特定对象的第一个匹配项。RemoveAt()移除ArrayList的指定索引处的元素。-12-ArrayList类-2示例:classArrayListDemo{ staticvoidMain(string[]args){ ArrayListarr=newArrayList();//实例化一个ArrayList对象

//使用Add方法向ArrayList中添加元素,将元素添加到其末尾

arr.Add("A"); arr.Add("B"); arr.Add("C"); foreach(intninnewint[3]{0,1,2}){ arr.Add(n); } //从ArrayList中移除特定对象的第一个匹配项,注意是第一个

arr.Remove("A"); //移除ArrayList指定索引处的元素

arr.RemoveAt(3); //在指定处添加一个元素

arr.Insert(1,"D"); //遍历ArrayList,并输出所有元素

for(inti=0;i<arr.Count;i++){ Console.WriteLine(arr[i].ToString()); } }}通过Remove()移除元素通过Insert()插入元素-13-Stack类-1Stack类也叫做堆栈类,用来实现数据结构中的“先进后出”机制。Stack类中常用的方法:方法说明Push()将对象插入Stack的顶部。Pop()移除并返回位于Stack顶部的对象。Peek()返回位于Stack顶部的对象但不将其移除。ToArray()将Stack复制到新数组中。-14-Stack类-2示例:classStackDemo{ staticvoidMain(string[]args) { //实例化stack类的对象

Stackstack=newStack(); //入栈,使用push方法向stack对象中添加数据

for(inti=0;i<6;i++) { stack.Push(i); Console.WriteLine("{0}入栈",i); } //返回栈顶元素

Console.WriteLine("当前栈顶元素为:{0}",stack.Peek().ToString()); //出栈

Console.WriteLine("移出栈顶元素:{0}",stack.Pop().ToString()); //返回栈顶元素

Console.WriteLine("当前栈顶元素为:{0}",stack.Peek().ToString()); //遍历栈

Console.Write("遍历栈:"); foreach(intiinstack) { Console.Write(i+""); } Console.WriteLine(); //清空栈

while(stack.Count!=0) { ints=(int)stack.Pop(); Console.WriteLine("{0}出栈",s); } Console.WriteLine("栈中元素个数为:{0}",stack.Count); }}通过Push()方法进行压栈操作通过Peek()方法获取栈顶元素通过Pop()方法进行移栈操作-15-Queue类-1队列的操作是“先进先出”的模式。在C#中提供了Queue类来实现队列的操作。Queue类中常用的方法及说明:方法说明Enqueue()将对象添加到Queue的结尾处。Dequeue()移除并返回位于Queue开始处的对象。Peek()返回位于Queue开始处的对象但不将其移除。ToArray()将Queue元素复制到新数组。-16-Queue类-2示例:classQueueDemo{ staticvoidMain(string[]args) { //实例化Queue类的对象

Queuequeue=newQueue(); //入队,使用Enqueue方法行Queue对象中添加元素

for(inti=1;i<6;i++) { queue.Enqueue(i); Console.WriteLine("{0}入队",i); } //返回队开始处的元素

Console.WriteLine("当前队开始处元素为:{0}",queue.Peek().ToString()); //遍历队列

Console.Write("遍历队列:"); foreach(intiinqueue) { Console.Write(i+""); } Console.WriteLine(); //清空队

while(queue.Count!=0) { intq=(int)queue.Dequeue(); Console.WriteLine("{0}出队",q); } Console.WriteLine("队列中元素的个数为:{0}",queue.Count); }}通过Enqueue()方法实现入队操作通过Peek()方法获取最先进入队列中的元素-17-Hashtable类-1Hashtable类也叫做哈希表类,它是由一组键(Key)/值(Value)对集合组成。Hashtable类中常用的方法及说明:

方法说明Add()将带有指定键和值的元素添加到Hashtable中Remove()从Hashtable中移除带有指定键的元素ContainsKey()确定Hashtable是否包含特定键ContainsValue()确定Hashtable是否包含特定值-18-Hashtable类-2示例:classHashtableDemo{ staticvoidMain(string[]args){ //实例化Hashtable对象

HashtablestuHashTable=newHashtable(); //向Hashtable中添加元素

stuHashTable.Add("01","赵"); stuHashTable.Add("02","钱"); stuHashTable.Add("03","孙"); stuHashTable.Add("04","李"); //遍历Hashtable foreach(DictionaryEntryelementinstuHashTable){ stringid=element.Key.ToString(); stringname=element.Value.ToString(); Console.WriteLine("学生的ID:{0}学生的姓氏:{1}",id,name); } //移除Hashtable中的元素

stuHashTable.Remove("03"); }}通过Add()方法实现元素插入操作通过Remove()方法实现元素移除操作-19-SortedList类-1SortedList类与Hashtable类相类似,每个数据也是由键/值对组成。它们之间的区别在于,SortedList类中的这些键/值对是按键来排序的,并且可以按照键和索引进行访问。下表中列出了SortedList类中常用的方法及说明。方法说明Add()将带有指定键和值的元素添加到SortedList中Remove()从SortedList中移除带有指定键的元素RemoveAt()移除SortedList指定索引处的元素ContainsKey()确定SortedList是否包含特定键ContainsValue()确定SortedList是否包含特定值-20-SortedList类-2示例:classSortedListDemo{ staticvoidMain(string[]args){ //实例化Sorted

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论