C# 数组

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 类提供了各种用于数组的属性和方法。

速速进入

相关推荐
哎呦没6 分钟前
SpringBoot框架下的资产管理自动化
java·spring boot·后端
m0_571957582 小时前
Java | Leetcode Java题解之第543题二叉树的直径
java·leetcode·题解
一点媛艺3 小时前
Kotlin函数由易到难
开发语言·python·kotlin
姑苏风3 小时前
《Kotlin实战》-附录
android·开发语言·kotlin
奋斗的小花生4 小时前
c++ 多态性
开发语言·c++
魔道不误砍柴功4 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
NiNg_1_2344 小时前
SpringBoot整合SpringSecurity实现密码加密解密、登录认证退出功能
java·spring boot·后端
pianmian14 小时前
python数据结构基础(7)
数据结构·算法
闲晨4 小时前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
老猿讲编程5 小时前
一个例子来说明Ada语言的实时性支持
开发语言·ada