目录
一、数组的基本用法
(1)数组的定义和初始化
(2)遍历和访问数组
二、多维数组
三、交错数组
(1)交错数组的概念
(2)交错数组和二维数组的区别
四、Array类
(1)概念
(2)Array 类的属性
(3)Array 类的方法
一、数组的基本用法
(1)数组的定义和初始化
//当然还有一些其他的创建数组和初始化的方法,但是这是我经常使用的int[] a = new int[10];int[] b = { 1, 2, 3, 4 };int[] c = a;
(2)遍历和访问数组
static void Main(string[] args){int[] b = { 11,23,31,20,94,10 };//第一种遍历for(int i = 0; i < b.Length; i++){Console.Write(b[i]+" ");}Console.WriteLine();Console.WriteLine("第二种遍历");foreach(int i in b){Console.Write(i + " ");}Console.WriteLine();}
二、多维数组
C#中的多维数组也叫做矩形数组,比如二维数组和三维数组的定义如下:
//二维数组 string [,] names; //三维数组 int [ , , ] m;
初始化二维数组:
int [,] a = new int [3,4] {{0, 1, 2, 3} , /* 初始化索引号为 0 的行 */{4, 5, 6, 7} , /* 初始化索引号为 1 的行 */{8, 9, 10, 11} /* 初始化索引号为 2 的行 */ };
访问二维数组:
a[1,2]//第二行第三列
示例
static void Main(string[] args){int n, m;Console.WriteLine("请输入行数和列数");string[] s = Console.ReadLine().Split(' ');if (!int.TryParse(s[0],out n)){Console.WriteLine("请输入整数!");return;}if (!int.TryParse(s[1],out m)){Console.WriteLine("请输入整数!");return; }Console.WriteLine("请输入数组");int[,] a = new int[n, m];string[] s1 = new string[n];string[] s2 = new string[m];for(int i = 0; i < n; i++){s1[i] = Console.ReadLine();}//转换成整形的二维数组for(int i = 0; i < n; i++){s2 = s1[i].Split(' ');for (int j = 0; j < m; j++){if (!int.TryParse(s2[j],out a[i, j])){Console.WriteLine("请输入整数类型!");return;}}}Console.WriteLine("整形数组");for(int i = 0; i < n; i++){for(int j = 0; j < m; j++){Console.Write(a[i, j]+" ");}Console.WriteLine();}}
三、交错数组
(1)交错数组的概念
交错数组顾名思义是一个数组,只不过它的元素也是数组,并且这些数组的大小长度可能不同,所以交错数组也可以被称为“数组中的数组”,在C#中,交错数组的元素是引用类型,初始化为null。它的定义和初始化有点类似于Java的双括号,而不是C#中通过都好辨识。
int[][] a;a = new int[3][];a[0] = new int[2] { 1, 2 };a[1] = new int[3] { 2, 2, 2 };a[2] = new int[1] { 2 };
练习:输出一个行数为10,没行长度加一的交错数组
static void Main(string[] args){int[][] a = new int[10][];int num = 0;for(int i = 0; i < a.Length; i++){int[] a1 = new int[i + 1];for(int j = 0; j < a1.Length; j++){num++;a1[j] = num;}a[i] = a1;}for(int i = 0; i < a.Length; i++){for(int j = 0; j < a[i].Length; j++){Console.Write(a[i][j] + " ");}Console.WriteLine();}}
(2)交错数组和二维数组的区别
根据上面的练习总结一下交错数组和二维数组的区别:
(1)二维数组的行列是固定的,不能发生变化,并且索引的访问是通过[i,j]来的
(2)交错数组就相当于它的元素都是一个数组,并且每个数组的长度可以是不同的,并且它的创建和访问是直接[i][j],有点类似于Java那种。
四、Array类
(1)概念
Array 类是 C# 中所有数组的基类,它是在 System 命名空间中定义。Array 类提供了各种用于数组的属性和方法。
C# 中的 Array 类是所有数组的基类,位于 System 命名空间下。
数组是一种用于存储固定大小、同一类型元素的集合。理解 Array 类的特性和方法对于高效编写 C# 程序非常重要。
以下是对 C# Array 类的详细介绍,包括其特性、常用方法、属性和使用示例。
特性
- 类型安全:数组只能存储指定类型的元素,类型在声明时确定。
- 固定长度:数组的长度在创建后不可更改。
- 索引访问:数组中的元素通过索引访问,索引从 0 开始。
- 多维支持:C# 支持一维、多维和交错数组(数组的数组)。
(2)Array 类的属性
下表列出了 Array 类中一些最常用的属性:
属性名 | 说明 | 示例代码 | 输出 |
---|---|---|---|
Length | 获取数组中元素的总个数。 | int[] arr = {1, 2, 3}; int length = arr.Length; | 3 |
Rank | 获取数组的维数(即数组的维度)。 | int[,] matrix = new int[2, 3]; int rank = matrix.Rank; | 2 |
IsFixedSize | 判断数组的大小是否固定。 | int[] arr = {1, 2, 3}; bool fixedSize = arr.IsFixedSize; | true |
IsReadOnly | 判断数组是否为只读。 | int[] arr = {1, 2, 3}; bool readOnly = arr.IsReadOnly; | false |
IsSynchronized | 判断数组是否线程安全。 | int[] arr = {1, 2, 3}; bool sync = arr.IsSynchronized; | false |
SyncRoot | 获取用于同步数组访问的对象,通常用于多线程操作。 | int[] arr = {1, 2, 3}; object syncRoot = arr.SyncRoot; | syncRoot |
(3)Array 类的方法
下表列出了 Array 类中一些最常用的方法:
序号 | 方法 & 描述 |
---|---|
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)继承。 |