C# 数组
一维数组
初始化数组
声明一个数组不会在内存中初始化数组。当初始化数组变量时,您可以赋值给数组。
数组是一个引用类型,所以您需要使用 new 关键字来创建数组的实例。
例如:
csharp
double[] balance = new double[10];
赋值给数组
您可以通过使用索引号赋值给一个单独的数组元素,比如:
csharp
double[] balance = new double[10];
balance[0] = 4500.0;
您可以在声明数组的同时给数组赋值,比如:
csharp
double[] balance = { 2340.0, 4523.69, 3421.0};
您也可以创建并初始化一个数组,比如:
csharp
int [] marks = new int[5] { 99, 98, 92, 97, 95};
在上述情况下,你也可以省略数组的大小,比如:
csharp
int [] marks = new int[] { 99, 98, 92, 97, 95};
您也可以赋值一个数组变量到另一个目标数组变量中。在这种情况下,目标和源会指向相同的内存位置:
csharp
int [] marks = new int[] { 99, 98, 92, 97, 95};
int[] score = marks;
当您创建一个数组时,C#
编译器会根据数组类型隐式初始化每个数组元素为一个默认值。例如,int
数组的所有元素都会被初始化为 0
。
注意
有一个例外情况,那就是当你使用数组字面量初始化数组时,你可以省略new关键字。数组字面量是一种特殊的语法,允许你直接通过指定数组元素的值来初始化数组。例如:
csharp
int[] myArray = { 1, 2, 3, 4, 5 }; // 使用数组字面量初始化数组
这个例子中,虽然我们没有显式使用new
关键字,但编译器会隐式地为我们执行相应的内存分配操作。这实际上是一种语法糖
,编译器在后台仍然使用new
来创建数组对象。
总之,虽然在使用数组字面量时可以省略new
,但在大多数情况下,创建数组时还是需要显式地使用new
关键字。
二维数组
您可以声明一个 string 变量的二维数组,如下:
csharp
string [,] names;
或者,您可以声明一个 int 变量的三维数组,如下:
csharp
int [ , , ] m;
初始化二维数组
多维数组可以通过在括号内为每行指定值来进行初始化。下面是一个带有 3 行 4 列的数组。
csharp
int [,] a = new int [3,4] {
{0, 1, 2, 3} , /* 初始化索引号为 0 的行 */
{4, 5, 6, 7} , /* 初始化索引号为 1 的行 */
{8, 9, 10, 11} /* 初始化索引号为 2 的行 */
};
访问二维数组元素
二维数组中的元素是通过使用下标(即数组的行索引和列索引)来访问的。例如:
csharp
int val = a[2,3];
总的来说就是一个方括号里面打逗号了
交错数组
错数组是数组的数组。
交错数组是一维数组。
您可以声明一个带有 int
值的交错数组 scores
,如下所示:
csharp
int [][] scores;
声明一个数组不会在内存中创建数组。创建上面的数组:
csharp
int[][] scores = new int[5][];
for (int i = 0; i < scores.Length; i++)
{
scores[i] = new int[4];
}
您可以初始化一个交错数组,如下所示:
csharp
int[][] scores = new int[2][]{new int[]{92,93,94},new int[]{85,66,87,88}};
其中,scores
是一个由两个整型数组组成的数组 ,
scores[0]
是一个带有 3
个整数的数组,scores[1]
是一个带有 4
个整数的数组。
交错数组的声明类型和其中的数组类型必须一致。
交错数组,也称锯齿形数组,是一种不规则的二维数组,它的特点是数组中每一行的长度并不相同。在声明交错数组时,我们需要指定顶层数组的类型(即子数组的类型),而每个子数组本身也是一个数组,其类型必须与顶层数组声明的类型相匹配 。
例如,如果我们声明一个整数类型的交错数组,那么该交错数组的每个子数组也必须是整数类型的数组。这样做可以确保交错数组的一致性和正确性,避免在运行时出现类型不匹配的错误。
因此,在创建和使用交错数组时,必须确保声明类型和其中的数组类型保持一致。
总之,交错数组的创立
csharp
type [][] name = new type [num][];
type
为类型
num
为交错数组的个数
参数数组
平时将数组传给函数都是指针的形式,但也有可能因此改变数组的值
于是我们可以通过params
来进行值传递
csharp
using System;
namespace ArrayApplication
{
class ParamArray
{
public int AddElements(params int[] arr)
{
int sum = 0;
foreach (int i in arr)
{
sum += i;
}
return sum;
}
}
class TestClass
{
static void Main(string[] args)
{
ParamArray app = new ParamArray();
int sum = app.AddElements(512, 720, 250, 567, 889);
Console.WriteLine("总和是: {0}", sum);
Console.ReadKey();
}
}
}
csharp
public int AddElements(params int[] arr)
就是多了个params
修饰
Array 类
Array
类是 C#
中所有数组的基类,它是在 System
命名空间中定义。Array
类提供了各种用于数组的属性和方法。