数组
一、数组简述&一维数组
- 数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合。
- 数组内存连续【可使用下标访问】
- 索引是从零开始的
1. 声明数组
就像这样的样子,带有一个[]就是一维的
double [] balance;
int [] numbers;
string [] names;
2. 初始化数组
声明一个数组不会在内存中初始化数组。当初始化数组变量时,您可以赋值给数组。
数组是一个引用类型,所以您需要使用 new 关键字来创建数组的实例。
double[] balance = new double[10];
3. 赋值给数组
//索引赋值
string [] names = new string[3];
names[0] = "张三";
//声明时赋值
int [] numbers = {21,3435,657,86,879879,807,8};
//new对象时赋值
int [] marks = new int[5] {312,557,9879,554,54};
//等价 int [] marks = new int[] {312,557,9879,554,54};
//可以赋值一个数组到另一数组变量中。目标和源会指向相同内存位置:
int [] marks = new int[] { 99, 98, 92, 97, 95};
int[] score = marks;
三、多维数组
//字符串类型的二维数组
string [,] names;
// int 变量的三维数组
int [ , , ] number;
总结,其实就是 [ ] 中的逗号数,解释了数组的维数
- 多维数组最简单的形式是二维数组。一个二维数组,在本质上,是一个一维数组的列表。
访问方式和 C语言的如出一辙;
也是使用下标访问 a[i, j] 形式的;
//声明并初始化一个数组
int [, ] number = new int[3,4]
{
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
四、交错数组
-
交错数组是数组的数组。
-
交错数组是一维数组。
-
区别于二维数组,交错数组的一维子项之间的长度和性质可以完全不一样
同样的交错数组也支持一维数组内填充多维,或者交错数组,具有高度的扩展性。
int[][] scores = new int[5][];
for (int i = 0; i < scores.Length; i++)
{
scores[i] = new int[4];
}
int[][] scores = new int[2][]
{
new int[]{92,93,94},
new int[]{85,66,87,88}
};
五、数组访问合集
1. for 循环
for循环的关键在于找到终止条件
//访问一维数组
int[] number = new int[]{13,324,6546,8,4646,68};
//一般我们都不会默认写数组的长度
for(int i = 0; i < number.Length; i++)
{
Console.Write(number[i] + " ");
}
//访问二位数组
int[,] array = new int[3, 4]
{
{ 13,43,54,65},
{ 1,432,56,76},
{ 213,45,65,6}
};
for (int i = 0; i < 3; i++)
{
Console.WriteLine('\n');
for(int j= 0; j < 4; j++)
{
Console.Write(array[i, j] + " ");
}
}
//访问交错数组
int[][] arrays = new int[2][]
{
new int []{ 21,3,421,412},
new int []{ 32,432,543}
};
for (int i = 0; i < 2; i++)
{
Console.WriteLine('\n');
for (int j = 0; j < arrays[i].Length; j++)
{
Console.Write(arrays[i][j] + " ");
}
}
2. foreach循环
这个好处在于不需要指定被遍历对象的长度
Console.Write("foreach 循环 遍历访问数组:\n");
foreach(var i in array1)
{
Console.Write(i + " ");
}
Console.Write("\n");
foreach(var i in array3)
{
Console.Write("\n");
foreach (var j in i)
{
Console.Write(j + " ");
}
}
六、数组的属性及方法
- Array 类是 C# 中所有数组的基类,它是在 System 命名空间中定义。Array 类提供了各种用于数组的属性和方法。
1. 常用属性
序号 | 属性名 | 属性 & 描述 |
---|---|---|
1 | IsFixedSize | 获取一个值,该值指示数组是否带有固定大小。 |
2 | IsReadOnly | 获取一个值,该值指示数组是否只读。 |
3 | Length | 获取一个 32 位整数,该值表示所有维度的数组中的元素总数。 |
4 | LongLength | 获取一个 64 位整数,该值表示所有维度的数组中的元素总数。 |
5 | Rank | 获取数组的秩(维度)。 |
2. 常用方法
序号 | 函数名 | 属性 & 描述 |
---|---|---|
1 | Clear | 根据元素的类型,设置数组中某个范围的元素为零、为 false 或者为 null。 |
2 | Copy(Array, Array, Int32) | 从数组的第一个元素开始复制某个范围的元素到另一个数组的第一个元素位置。长度由一个 32 位整数指定。 |
3 | CopyTo(Array, Int32) | 从当前的一维数组中复制所有的元素到一个指定的一维数组的指定索引位置。索引由一个 32 位整数指定。 |
4 | GetLength | 获取一个 32 位整数,该值表示指定维度的数组中的元素总数。 |
5 | GetLongLength | 获取一个 64 位整数,该值表示指定维度的数组中的元素总数。 |
6 | GetLowerBound | 获取数组中指定维度的下界。 |
7 | GetType | 获取当前实例的类型。从对象(Object)继承。 |
8 | GetUpperBound | 获取数组中指定维度的上界。 |
9 | GetValue(Int32) | 获取一维数组中指定位置的值。索引由一个 32 位整数指定。 |
10 | IndexOf(Array, Object) | 搜索指定的对象,返回整个一维数组中第一次出现的索引。 |
11 | Reverse(Array) | 逆转整个一维数组中元素的顺序。 |
12 | SetValue(Object, Int32) | 给一维数组中指定位置的元素设置值。索引由一个 32 位整数指定。 |
13 | Sort(Array) | 使用数组的每个元素的 IComparable 实现来排序整个一维数组中的元素。 |
14 | ToString | 返回一个表示当前对象的字符串。从对象(Object)继承。 |