1. 数组的声明和赋值方式

int[] myArray;

int[] myArray = {1, 2, 3, 4};

int[] myArray = new int[4] {1, 2, 3, 4};

2. 多维数组的声明

int[,] myArray = new int[2, 3];

int[,] myArray = {
{1, 2, 3},
{1, 2, 3}
};

获取多维数组元素,可以使用:

myArray[0, 1]; // 2

3. 锯齿数组的声明

int[][] myArray = new int[2][];

myArray[0] = new int[2] {1, 2};
myArray[1] = new int[3] {1, 2,3};

获取锯齿数组元素,可以使用:

myArray[0][1]; // 2

4. 数组元素的获取

可通过下标索引获取:myArray[0];

还可以用GetValue()方法读取对应元素的值;

SetValue()方法设置对应元素的值。

5. foreach循环

string[] myArray = {"alily", "swen", "ben", "cat"};
foreach (var value in myArray) {
    Console.Write(value); // alily, swen, ben, cat
}

7. 复制数组

Clone()方法可创建数组的浅表副本。如果数组的元素是值类型,Clone()则复制所有值;如果数组包含引用类型,则不复制元素,而复制引用。

// 当数组元素是值类型时,Clone()复制所有值
int[] intArray = {1, 2, 3};
int[] intArrayClone = (int[]) intArray.Clone(); // intArrayClone  = {1, 2, 3}

// 当数组元素包含引用类型,则只复制引用
Person[] girl = {new Person{FirstName = "Sam", LastName = "Lennon"}, new Person{FirstName = "Ben", LastName = "Cartney"}};
Person[] girlClone = (Person[]) girl.Clone(); // girl和girlClone引用的Person对象是相同的,当修改girlClone中一个引用类型元素的属性时,也会改变girl中对应对象

Copy()方法会创建浅表副本。

Clone()方法和Copy()方法的重要区别:

Clone()方法会创建一个新数组,而Copy()方法必须传递阶数相同且有足够元素的已有数组。

如果需要包含引用类型的数组的深层副本,就必须迭代数组并创建对象。

8. 数组排序

Sort()使用QuickSort算法对数组中元素的进行排序。

如:

string[] names = {"alily", "swen", "ben", "cat"};
Array.Sort(names); // alily, ben, cat, swen

9. 数组比较

CompareTo()。如果比较的对象相等则返回0;如果该参数实例应排在参数对象的前面,则返回负数,否则返回正数。

string a = "world";
string b = "hello";
int result = a.CompareTo(b); // 返回一个负数

Array的属性和方法汇总

属性或方法 描述
IsFixedSize 判断数组是否有固定大小。返回布尔值。
IsReadOnly 判断数组是否只读。返回布尔值。
Length 获取所有维度的数组的元素个数总和。
LongLength 获取所有维度的数组的元素个数总和。
Rank 获取数组的秩(维度)。
CompareTo() 数组比较。
Clear() 清空数组。
Clone() 浅表复制数组副本,返回复制后的数组。
Copy(Array1, Array2, int length) 把Array1复制给Array2,复制元素的个数第三个参数指定。
CopyTo(Array2, Int32) 把当前数组复制给Array2,复制元素的个数第二个参数指定。
GetLength(int rank) 获取指定维度的数组中元素总数。
GetLowerBound() 获取数组中指定维度的下界。
GetUpperBound() 获取数组中指定维度的上界。
GetType() 获取当前实例的类型。从对象(Object)继承。
GetValue(int index) 获取一维数组中指定位置的值。
IndexOf(Array, Object) 搜索指定的对象,返回整个一维数组中第一次出现的索引。
Reverse(Array) 逆转整个一维数组中元素的顺序。
SetValue(value, int index) 给一维数组中指定位置的元素设置值。
Sort(Array) 使用数组的每个元素的iComparable实现来排序整个一维数组中的元素。
ToString() 将当前对象转换成字符串。
本文作者:子匠_Zijor,转载请注明出处:http://www.dengzhr.com/others/backend/csharp/570