C#-数组:一维数组、二维数组、交错数组

数组:声明初始化过后,就不能在原有的基础上进行 添加 或者 删除 了

一:一维数组

一般将一维数组简称为数组

1.1 数组的声明
cs 复制代码
int[] arr1; 没有分配房间。初始化后就分配房间了

int[] arr2 = new int[5]; 存在默认值,为0

int[] arr3 = new int[5] { 1, 2, 3, 4, 5 }; 后面内容的数量要与5匹配

int[] arr4 = new int[] { 1,2,3,4,5,6,7,8,9};

int[] arr5 = { 1,3,4,5,6};

bool[] arr6 = { true, false };
1.2 数组的使用

长度:arr1.Length;

获取值:索引 arr2[0]

修改值:赋值 arr2[0]=2;

遍历:循环。for、foreach ←改查

增删:"搬家"

数组的遍历-逐个输出数组中的元素,或查找某个元素

cs 复制代码
//数组的遍历
for(int i = 0;i < array.Length;i++){
    Console.WriteLine(array[i]);
}

增加数组元素:数组声明初始化过后,就不能在原有的基础上进行 添加 或者 删除 了

cs 复制代码
//增加一个数组元素->"搬家"
int[] array2 = new int[6];
for(int i = 0;i < array.Length;i++){
    array2[i] = array[i];
}
array = array2;

应用:批量存储游戏中的同一类型对象的 容器 比如 所有的怪物 所有玩家

二:二维数组

2.1 二维数组的声明
cs 复制代码
int[,] arr;
int[,] arr2 = new int[3, 3];
int[,] arr3 = new int[3, 3] { { 1, 2, 3 }, 
                              { 4, 5, 6 }, 
                              { 7, 8, 9 } };
int[,] arr4 = new int[,] { { 1, 2, 3 },
                           { 4, 5, 6 },
                           { 7, 8, 9 } };
int[,] arr5 = { { 1, 2, 3 },
                { 4, 5, 6 },
                { 7, 8, 9 } };
2.2 二维数组的使用

得到行:arr.GetLength(0);

得到列:arr.GetLength(1);

获取值:arr[0, 1]

修改值:赋值 arr2[0,1]=2;

遍历:循环嵌套。for、foreach ← 改查

增删:"搬家"

cs 复制代码
//二维数组的遍历
int[][] arr2 = new int[][]{{new int[] {1,2,3}},new int[] {4,5,6}};
//方法一:
for(int i=0;i<arr2.GetLength(0);i++){
    for(int j=0;j<arr[i].Length,j++){
        Console.WriteLine(arr2[i][j]);
    }
}
//方法二:
for(int i=0;i<arr2.GetLength(0);i++){
    foreach(int num in arr2[i]){
        Console.WriteLine(num);
    }
}
cs 复制代码
//增加二维数组元素
int[,] array2 = new int[3,3];
for(int i = 0;i < array.GetLength(0);i++){
    for(int j = 0;j < array.GetLength(1);j++)
      array2[i,j] = array[i,j];
}
array = array2;

应用:游戏中一般用来存储 矩阵,再控制台小游戏中可以用二维数组,表示地图格子

二维数组练习题

三:交错数组

交错数组 是 数组的数组,每个维度的数量可以不同

注意:二维数组的每行的列数相同,交错数组每行的列数可能不同

3.1 交错数组的声明
复制代码
int[][] arr1;
int[][] arr2 = new int[3][];
int[][] arr3 = new int[3][] { new int[] { 1, 2, 3 },
                                          new int[] { 1, 2 },
                                          new int[] { 1 }};
int[][] arr4 = new int[][] { new int[] { 1, 2, 3 },
                                          new int[] { 1, 2 },
                                          new int[] { 1 }};
int[][] arr5 = { new int[] { 1, 2, 3 },
                             new int[] { 1, 2 },
                             new int[] { 1 }};

交错数组:可以存储同一类型的m行不确定列的数据

3.2 二维数组和交错数组的区别
  1. 以数组作为成员变量

  2. 每个维度的数量可不同

3.3 交错数组的使用

得到行:arr.GetLength(0)

得到某一行列数:array[0].Length

获取值:array[0][1]

修改值:赋值 array[0][1]=2;

遍历:循环嵌套。for、foreach ← 改查

补充:数组搬家

cs 复制代码
  public void AddFriend(Person p){
      if(friends == null){
          friends = new Person[] { p };
      }
      else{
          //新建一个 房子数组
          Person[] newFriends = new Person[friends.Length + 1];
          //搬家
          for (int i = 0; i < friends.Length; i++){
              newFriends[i] = friends[i];
          }
          //把新加的朋友放到最后一个
          newFriends[newFriends.Length - 1] = p;
          //地址重定向
          friends = newFriends;
      }
  }
相关推荐
泛凡(Linyongui)11 小时前
基于 CW32L010 的智能厨卫调温旋钮方案--低成本 EC21 编码旋钮全解析
单片机·嵌入式硬件·c#
暴走约伯13 小时前
【VFX工具链源码拆解 02】告别机械劳动(上):一键统改百个子粒子颜色与批量重命名
3d·unity·c#·材质
信息安全失业大专人员15 小时前
每日了解一个智能体-WorkBuddy
开发语言·ai·c#·智能体
呆呆敲代码的小Y15 小时前
【实战精选面试题】C# 面试题详细解答,按难易程度排序
android·java·游戏·c#·游戏开发·unity面试题·c#面试题
淡海水16 小时前
09-01-内存-Unity资源生命周期全景
unity·c#·游戏引擎·.netcore·gc
椒颜皮皮虾྅19 小时前
让 C# 读懂整张图:DeploySharp 驱动 PaddleOCR v4/v5/v6,打通 OCR 全流程
开发语言·人工智能·深度学习·学习·c#·ocr·cuda
昂好的day19 小时前
C# 同步异步与多线程:Thread / Task / 线程池一次讲透(上篇)
开发语言·windows·c#
吃一碗粉只付一碗钱1 天前
12-给SPA友好的401和403响应
c#·状态模式
caimouse1 天前
MonoDevelop 编译用户应用程序时调用的是哪个编译器
c#
will_net2 天前
apollo 站点部署&C#接入
开发语言·c#·apollo