C#程序设计 第4章数组与集合
C# 程序设计 第4章 数组与集合
集合 Array类 ArrayList 掌握Array类的使用及操作 掌握ArrayList的使用及操作 2
2 集合 Array类 ArrayList ★ 掌握Array类的使用及操作 掌握ArrayList的使用及操作
Array类 C#中的数组继承自System.Array ■Array类是抽象类。 ■不能使用构造函数来创建数组 ■用静态方法Createlnstance()创建数组 static Array Createlnstance(Type elementType,int length); 值 索引 ■用SetValue(object value,.int index)方法设置值。 object GetValue(int index) Array intArray1 Array.Createlnstance(typeof(int),5); for (int i=0;i<5;i++) intArray1.SetValue(33,i); } for (int i=0;i<5;i++) Console.WriteLine(intArray1.GetValue(i));
3 Array类 ▪ C#中的数组继承自System.Array ◼ Array类是抽象类。 ◼ 不能使用构造函数来创建数组 ▪ 用静态方法CreateInstance( )创建数组 ◼ static Array CreateInstance(Type elementType, int length); ◼ 用SetValue(object value, int index)方法设置值 。 ◼ object GetValue(int index) 值 索引 Array intArray1 = Array.CreateInstance(typeof(int), 5); for (int i = 0; i < 5; i++) { intArray1.SetValue(33, i); } for (int i = 0; i < 5; i++) { Console.WriteLine(intArray1.GetValue(i)); }
Array类 用静态方法Createlnstance()创建数组 public static Array Createlnstance (Type elementType,int lengths,int lowerBounds); ■用SetValue(object value,int index)方法设置值。 ■lowerBounds:创建具有指定下限 ■lengths:维长 into lengths ={2,3 ) into]lowerBounds ={1,10 } Array ComputerLanguage =Array.Createlnstance(typeof(string),lengths,lowerBounds); ComputerLanguage.SetValue("C++",1,10); ComputerLanguage.SetValue("Java",1,11); ComputerLanguage.SetValue("C#",1,12); ComputerLanguage.SetValue("Pascal",2,10); ComputerLanguage.SetValue("Fortran",2,11); ComputerLanguage.SetValue("COBOL",2,12); foreach(string e in ComputerLanguage) Console.WriteLine(e);
4 Array类 ▪ 用静态方法CreateInstance( )创建数组 ◼ public static Array CreateInstance (Type elementType, int[] lengths, int[] lowerBounds); ◼ 用SetValue(object value, int index)方法设置值 。 ◼ lowerBounds:创建具有指定下限 ◼ lengths:维长
Array类 获得数组指定维的上下限 ■int GetUpperBound(int dimension):上限 ■int GetLowerBound(int dimension):下限 ■获得指定维的元素个数 int GetLength(int dimension) for(int i =1;i<=ComputerLanguage.GetUpperBound(0);i++) for (int j=10;j<=ComputerLanguage.GetUpperBound(1);j++) Console.Write("[O)lt",(string)ComputerLanguage.GetValue (i,j)); Console.WriteLine(); }
5 Array类 ▪ 获得数组指定维的上下限 ◼ int GetUpperBound(int dimension):上限 ◼ int GetLowerBound(int dimension):下限 ▪ 获得指定维的元素个数 ◼ int GetLength(int dimension)
Array类 Clone() ■创建数组的副本 数组的元素是值类型,就会为数组分配内存,复制所有 的值 int nArray1={1,2 ) int nArray2 nArray1; int]]nArray3=(int )nArray1.Clone(); nArray1[0]=11; Console.WriteLine("nArray1[O]的值:{0",nArray1[0]; Console.WriteLine('nArray2[o]的值:{o",nArray2:I0]; Console.WriteLine("nArray3o]的值:{o",nArray3o]); C:\Windows\system. nArray1[01的值:11 nArray2[01的值:11 nArray3[0]的值:1 6
6 Array类 ▪ Clone() ◼ 创建数组的副本 ◼ 数组的元素是值类型,就会为数组分配内存,复制所有 的值
Array类 Clone() 创建数组的副本 ■数组的元素引用类型, 则不复制元素,而只复制引用 C:\Windows\system32\cmd.exe Person personArray1 personArray1【g].Name的值:张 ersonArray2I0].Name值: rsonArray3[].Name值:张 new Person(李俊",25), new Person("周玲",32), }找 Person personArray2 personArray1; Person[personArray3=(Person[)personArray1.Clone(); personArray1[0].Name="张敏"; Console.WriteLine("personArray1[o].Name的值:{O}", personArray1[0].Name); Console.WriteLine("personArray:2[o].Name值:{0}", personArray2[0].Name); Console.WriteLine("personArray3[0].Name:[0)", personArray3[0].Name);
7 Array类 ▪ Clone() ◼ 创建数组的副本 ◼ 数组的元素引用类型,则不复制元素,而只复制引用
Array的方法 ■Array.BinarySearch(数组名,key);二分查找 ■Array.Copy(源数组名,目标数组名,长度N) ·将源数组从第一个元素开始的N个元素复制给目标数组 ■数组名.CopyTo(目标数组,指定起始下标) ·将一维数组所有元素复制到一维目标数组指定的起始下 标开始的位置 ■Array.Sort(数组名) ■Array.Reverse(数组名) ■Array.Reverse(数组名,下标,长度) 8
8 Array的方法 ▪ Array.BinarySearch(数组名,key);二分查找 ▪ Array.Copy(源数组名,目标数组名,长度N) ◼ 将源数组从第一个元素开始的N个元素复制给目标数组 ▪ 数组名.CopyTo(目标数组,指定起始下标) ◼ 将一维数组所有元素复制到一维目标数组指定的起始下 标开始的位置 ▪ Array.Sort(数组名) ▪ Array.Reverse(数组名) ▪ Array.Reverse(数组名,下标,长度)
Array的方法 ■IndexOf(数组名,要查找的值) ■返回指定值第一次出现的索引值 ■数组名.SetValue(值,下标) ■给数组元素赋值 ■数组名.GetValue(下标) ■读取数组元素的值 ■Array.Copy(源数组名,目标数组名,长度N) ·将源数组从第一个元素开始的N个元素复制给目标数组 ■数组名.CopyTo(目标数组,指定起始下标) ■将一维数组所有元素复制到一维目标数组指定的起始下 标开始的位置
9 Array的方法 ▪ IndexOf(数组名,要查找的值) ◼ 返回指定值第一次出现的索引值 ▪ 数组名.SetValue(值,下标) ◼ 给数组元素赋值 ▪ 数组名.GetValue(下标) ◼ 读取数组元素的值 ▪ Array.Copy(源数组名,目标数组名,长度N) ◼ 将源数组从第一个元素开始的N个元素复制给目标数组 ▪ 数组名.CopyTo(目标数组,指定起始下标) ◼ 将一维数组所有元素复制到一维目标数组指定的起始下 标开始的位置
Array的方法 数组名.Length ·属性。获得数组所有维数中元素的总数 ■Array.Reverse(数组名) ■Array.Reverse(数组名,下标,长度) ■反转一维数组全部元素或从下标开始的指定长度的元素 ■数组名.Rank ■返回数组的维数 ■数组名.GetLowerBound(维数) ·返回数组指定维数的下限 ■对于一维和多维数组 10
10 Array的方法 ▪ 数组名.Length ◼ 属性。获得数组所有维数中元素的总数 ▪ Array.Reverse(数组名) ▪ Array.Reverse(数组名,下标,长度) ◼ 反转一维数组全部元素或从下标开始的指定长度的元素 ▪ 数组名.Rank ◼ 返回数组的维数 ▪ 数组名.GetLowerBound(维数) ◼ 返回数组指定维数的下限 ◼ 对于一维和多维数组