第2章.数组和ArrayList
2.1 数组基本概念
数组是可索引的数据的集合。数组既可以是内置的类型,也可以是用户自定义的类型。事实上,把数组数据称为对象大概是最简便的方式。C#中数组实际上就是对象的本身,因为它们都源于System.Array类的一个声明实例,所以在使用数组时也可以使用此类的所有方法和属性。
2.1.1 数组的声明和初始化
namespace test { class Program { static void Main(string[] args) { //实例化数组需要确定数组大小 此处预留了5个字符串的内存空间 string[] names = new string[10]; //也可以采用初始化列表的方式来实现 无需指定元素个数 int[] numbers = new int[] { 1, 2, 3, 4, 5 }; } } }
2.1.2 数组元素的设置和存取访问
namespace test { class Program { static void Main(string[] args) { string[] nNames = new string[10]; //存储数组元素既可以采用直接存取访问的方法也可以通过调用Array类的SetValue方法 //直接存取方式通过赋值语句左侧的索引来引用数组位置 nNames[2] = "Raymond"; //SetValue方法会取走两个参数 一个是索引数另一个是元素值 nNames.SetValue("Raymond", 2); //数组元素访问原理同上 string s1 = nNames[2]; string s2 = nNames.GetValue(2) as string; } } }
2.1.3 取回数组元数据的方法和属性
namespace test { class Program { static void Main(string[] args) { //Array类为取回数组元素数据提供了几种属性: //Length:返回数组所有维数内元素的总数量 //GetLength:返回数组指定维数内元素的数量 //Rank:返回数组的维数 //GetType:返回当前数组实例的类型 int[] numbers = new int[] { 0, 1, 2, 3, 4 }; Type arrayType = numbers.GetType(); if (arrayType.IsArray) { Console.WriteLine("The array type is: {0}", arrayType); } else { Console.WriteLine("Not an array"); } Console.Read(); } } }
2.1.4 多维数组
参考链接:https://www.runoob.com/csharp/csharp-multi-dimensional-arrays.html
2.1.5 参数数组
参考链接:https://www.runoob.com/csharp/csharp-param-arrays.html
2.1.6 锯齿状数组
参考链接:https://www.runoob.com/csharp/csharp-jagged-arrays.html
2.2 ArrayList类
当无法提前知道数组的大小或者在程序运行期间数组的大小可能会发生改变的时候,静态数组就不是很适用了。这类问题的一种解决方案就是当数组超出存储空间的时候使用能够自动调整自身大小的数组类型。这种数组被称为是ArrayList。它是.Net框架库中System.Collections命名空间的内容。
ArrayList对象拥有可存储数组大小尺寸的Capacity属性。该属性的初始值为16。当AarrayList中元素的数量达到此界限值时,Capacity属性就会为ArrayList的存储空间另外增加16个元素。在数组内元素数量有可能扩大或缩小的情况下使用ArrayList会比用带标准数组的ReDim Preserver更加有效。
2.2.1 ArrayList类的成员
ArrayList类常用方法和属性:
Add( ):向ArrayList添加一个元素。
AddRange( ):在ArrayList末尾处添加群集的元素。
Capacity( ):存储ArrayList所能包的含元素的数量。
Clear( ):从ArrayList中移除全部元素。
Contains( ):确定指定的对象在ArrayList内。
Copy To( ):把ArrayList或其中的某一段复制给一个数组。
Count( ):返回ArrayList中当前元素的数量。
GetEnumerator( ):返回迭代ArrayList得到计数器。
GetRange( ):返回ArrayList的子集作为ArrayList。
IndexOf( ):返回指定数据项首次出现的索引。
Insert( ):在ArrayList的指定索引处插入一个元素。
InsertRange( ):从ArrayList指定索引处开始插入群集的元素。
Item( ):在指定索引处获取或者设置一个元素。
Remove( ):移除指定数据项的首次出现。
RemoveAt( ):在指定索引处移除一个元素。
Reverse( ):对ArrayList中元素的顺序进行反转。
Sort( ):对ArrayList中的元素按照阿拉伯字母表顺序进行排序。
ToArray( ):把ArrayList的元素复制给一个数组。
TrimToSize( ):为ArrayList中元素数量设置ArrayList的容量。