C#基础 之 数组Array、ArrayList、List
来源:互联网 发布:eval函数 js 编辑:程序博客网 时间:2024/06/06 00:34
什么是数组?
数组是一种数据结构,包含同一个类型的多个元素。
数组的声明
int[] myIntArray;
注:声明数组时,方括号 ([]) 必须跟在类型后面,而不是变量名后面。在 C# 中,将方括号放在变量名后是不合法的语法。
数组的初始化
我们知道数组是引用类型,所以需要给他分配堆上的内存。
1.myIntArray = new int[3];2.myIntArray = new int[] { 1, 2, 3 };3.int[] myIntArray = { 1, 2, 3 }; //当使用这种方法对数组进行初始化时,只能在声明变量数组时使用,不能在声明数组之后使用。
数组具有以下属性:
数组可以是一维、多维或交错的。
数值数组元素的默认值设置为零,而引用元素的默认值设置为 null。
交错数组是数组的数组,因此,它的元素是引用类型,初始化为 null。交错数组元素的维度和大小可以不同。
数组的索引从零开始:具有 n 个元素的数组的索引是从 0 到 n-1。
数组元素可以是任何类型,包括数组类型。
数组类型是从抽象基类型 Array 派生的引用类型。由于此类型实现了 IEnumerable 和 IEnumerable,因此可以对 C# 中的所有数组使用 foreach 迭代。
在C#中,数组实际上是对象,而不只是像C和C++中那样的可寻址连续内存区域。
System.Array 类提供了许多其他有用的方法和属性,用于排序、搜索和复制数组。
方法名
描述
重载
Array.Length
获取数组的长度
Array.Rank
显示数组的维数
Array.GetUpperBound(int dimension)
获取 System.Array 的指定维度的上限。参数 dimension: Array 的从零开始的维度
GetLowerBound(int dimension)
下限
object GetValue(int index1, int index2)
返回索引值
多重
SetValue(object value, int index)
IndexOf<T>(T[] array, T value)
搜索指定的T类型的对象,并返回整个 Array 中第一个匹配项的索引。<T>必需重载Object的 Equals 比较方法
多重
LastIndexOf<T>(T[] array, T value)
搜索指定的T类型的对象,并返回整个 Array 中最后一个匹配项的索引。
多重
Sort<T>(T[] array)
使用Array的每个元素的System.IComparable<T>泛型接口实现,对整个Array中的元素进行排序。<T>必需实现IComparable接口
多重
ForEach<T>(T[] array, System.Action<T> action)
多重
更多在对象查看器:mscorlib.system.arra中
ArrayList 和 List 数组
两者是较为复杂的数组,引用 System.Collections 命名空间
ArrayList 或 List 对象是较为复杂的数组。ArrayList 类和 List 泛型类提供多数 System.Collections 类都提供的但 Array 类未提供的一些功能。例如:
- Array 的容量是固定的,而 ArrayList 或 List 的容量可根据需要自动扩充。如果更改了 Capacity 属性的值,则可以自动进行内存重新分配和元素复制。
- ArrayList 和 List 提供添加、插入或移除某一范围元素的方法。在 Array 中,您只能一次获取或设置一个元素的值。
- 使用 Synchronized 方法很容易创建 ArrayList 或 List 的同步版本。Array 将实现同步的任务留给了用户。
- ArrayList 和 List 提供将只读和固定大小包装返回到集合的方法;而 Array 不提供。
另一方面,Array 提供了 ArrayList 和 List 所缺少的某些灵活性。例如:
- 可以设置 Array 的下限,但 ArrayList 或 List 的下限始终为零。
- Array 可以具有多个维度,而 ArrayList 或 List 始终只是一维的。
- 特定类型(不包括 Object)的 Array 的性能优于 ArrayList,这是因为 ArrayList 的元素属于 Object 类型,所以在存储或检索值类型时通常发生装箱和取消装箱操作。不过,在不需要重新分配时(即最初的容量十分接近列表的最大容量),List 的性能与同类型的数组十分相近。
需要数组的大多数情况都可以改为使用 ArrayList 或 List;它们更容易使用,并且一般与相同类型的数组具有相近的性能。
Array 位于 System 命名空间中;ArrayList 位于 System.Collections 命名空间中;List 位于 System.Collections.Generic 命名空间中。
class TestArraysClass{ static void Main() { // Declare a single-dimensional array int[] array1 = new int[5]; // Declare and set array element values int[] array2 = new int[] { 1, 3, 5, 7, 9 }; // Alternative syntax int[] array3 = { 1, 2, 3, 4, 5, 6 }; // Declare a two dimensional array int[,] multiDimensionalArray1 = new int[2, 3]; // Declare and set array element values int[,] multiDimensionalArray2 = { { 1, 2, 3 }, { 4, 5, 6 } }; // Declare a jagged array int[][] jaggedArray = new int[6][]; // Set the values of the first array in the jagged array structure jaggedArray[0] = new int[4] { 1, 2, 3, 4 }; }}
http://www.cnblogs.com/jiajiayuan/archive/2012/04/19/2442673.html
http://www.cnblogs.com/hzqghost/archive/2009/08/11/1543600.html
- C#基础 之 数组Array、ArrayList、List
- c# 数组(Array),ArrayList ,List 的区别与联系
- c# 数组(Array),ArrayList ,List 的区别与联系
- C#中数组Array、ArrayList、泛型List<T>的比较
- C# []、Array、List、ArrayList 区别
- C# []、Array、List、ArrayList 区别
- C#中的数组,ArrayList,List
- c#中数组 list Arraylist
- c#之ArrayList与Array
- C# []、Array、List、ArrayList 区别简介
- C# []、Array、List、ArrayList 区别简介
- C# []、List、Array、ArrayList 区别及应用
- C# []、List、Array、ArrayList 区别及应用
- C# []、List、Array、ArrayList 区别及应用
- C# []、List、Array、ArrayList 区别及应用
- C# []、List、Array、ArrayList 区别及应用
- C# []、List、Array、ArrayList 区别及应用
- C# []、List、Array、ArrayList 区别及应用
- 渣
- c函数指针
- Holding Bin-Laden Captive!
- CentOS 使用 tree
- Chrome 插件: 起动本地应用 (Native messaging)
- C#基础 之 数组Array、ArrayList、List
- __attribute__编绎属性、关于__init、__initdata、__exit、__exitdata及类似的宏、关于initcall的一些宏定义、__setup宏的来源及使用
- Cocos2d-x屏幕适配之Sprite绘制原理
- eclipse 找不到或无法加载主类
- Ubuntu12下嵌入式Qt开发环境配置总结
- poj 2417 Discrete Logging(A^x=B(mod c),普通baby_step)
- uva 10098(全排列)
- 从textarea中空格、逗号、换行转换为逗号分隔的字符串 js string.split
- 排序初探(三种基本排序)