当前位置: 首页 > news >正文

C# 数组C# 多维数组

原文C# 数组_w3cschool

请勿将文章标记为付费!!!!!

C#数组

数组表示特定类型的固定数量的变量。

在元素类型后面创建一个带方括号的数组。

例如:


char[] letterArray = new char[5]; // Declare an array of 5 characters 

在元素类型后面创建一个带方括号的数组。


letterArray[0] = 'a'; 
letterArray[1] = 'e'; 
letterArray[2] = 'i'; 
letterArray[3] = 'o'; 
letterArray[4] = 'u'; 
Console.WriteLine (letterArray[1]); // e 

我们可以使用for循环语句来遍历数组中的每个元素。


for (int i = 0; i < letterArray.Length; i++) {Console.Write (letterArray[i]); // aeiou 
}

数组的Length属性返回数组中元素的数量。

创建数组后,无法更改其长度。

数组初始化表达式可以在一个步骤中声明和填充数组:


char[] letterArray = new char[] {'a','e','i','o','u'}; 

或简单为:


char[] letterArray = {'a','e','i','o','u'}; 

所有数组都继承自System.Array类,为所有数组提供通用服务。

默认元素初始化

创建数组总是使用默认值预先初始化元素。

例如,考虑创建一个整数数组。因为int是一个值类型,所以分配1000个整数。

每个元素的默认值为0:


int[] a = new int[1000]; 
Console.Write (a[123]); // 0 

值类型与引用类型

当元素类型是值类型时,每个元素值将作为数组的一部分分配。

例如:


struct Point { public int X, Y; 
} Point[] a = new Point[1000]; 
int x = a[500].X; // 0 

如果Point是一个类,创建数组将只分配10个空引用:


class Point { public int X, Y; 
} Point[] a = new Point[10]; 
int x = a[5].X; // Runtime error, NullReferenceException 

要避免此错误,请在实例化数组后显式实例化Point值:


Point[] a = new Point[10]; 
for (int i = 0; i < a.Length; i++){ // Iterate i from 0 to 9a[i] = new Point();             // Set array element i with new point 
}

数组本身始终是引用类型对象,不管元素类型如何。

例如,以下是合法的:


int[] myArray = null; 

C# 多维数组

C#多维数组

多维数组有两种类型:矩形和锯齿。

矩形阵列表示存储器的n维块,锯齿形阵列是阵列阵列。

矩形数组

使用逗号分隔每个维度来声明矩形数组。

以下声明一个矩形二维数组,其中维度为3乘3:


int[,] matrix = new int[3,3]; 

数组的 GetLength 方法返回从0开始的给定维度的长度:


for (int i = 0; i < matrix.GetLength(0); i++) {for (int j = 0; j < matrix.GetLength(1); j++) {matrix[i,j] = i * 3 + j; }
}

矩形数组可以初始化如下:


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

锯齿数组

锯齿数组使用连续的方括号来表示每个维度。

这里是一个声明一个锯齿状的二维数组的例子,其中最外面的维度是3:


int[][] matrix = new int[3][]; 

内部尺寸未在声明中指定,每个内部数组可以是任意长度。

每个内部数组都隐式初始化为null,而不是一个空数组。

每个内部数组必须手动创建:


for (int i = 0; i < matrix.Length; i++) { matrix[i] = new int[3]; // Create inner array for (int j = 0; j < matrix[i].Length; j++)matrix[i][j] = i * 3 + j; } 
}

锯齿数组可以初始化如下:


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

数组初始化

有两种方法可以缩短数组初始化表达式。

第一个是省略new运算符和类型限定:


char[] vowels = {"a","e","i","o","u"}; 
int[,] rectangularMatrix = { {0,1,2}, {3,4,5}, {6,7,8} 
}; int[][] jaggedMatrix = { new int[] {0,1,2}, new int[] {3,4,5,2,2,2,2}, new int[] {6,7,8} 
}; 

第二种方法是使用var关键字,它告诉编译器隐式地键入一个局部变量:


var i = 3; // i is implicitly of type int 
var s = "asdf"; // s is implicitly of type string var rectMatrix = new int[,]{ {0,1,2}, {3,4,5}, {6,7,8} 
}; var jaggedMatrix = new int[][]{new int[] {0,1,2},new int[] {3,4,5},new int[] {6,7,8} 
}; 

我们可以省略new关键字后的类型限定符,并让编译器推断数组类型:

var letters = new [] {'a','e','i','o','u'}; //编译器推断char []

http://www.dtcms.com/a/354365.html

相关文章:

  • QML(2) - Qt 中如何注册一个 C++ 类到 QML
  • MySQL的类split方法实现
  • Java表格处理详解以及结合实际项目使用
  • WebStrom-如何设置前端项目快捷启动
  • 29. String, StringBuffer,StringBuilder 的区别是什么
  • 统一虚拟试穿框架OmniTry:突破服装局限,实现多品类可穿戴物品虚拟试穿无蒙版新跨越。
  • 【小白笔记】网速
  • TypeScript:完整的函数类型书写方式
  • 【开题答辩全过程】以超市管理系统为例,包含答辩的问题和答案
  • Linux 系统核心调优:CPU、磁盘 I/O、网络与内核参数实战
  • 流行蝴蝶剑高清重制版Windows10可玩!
  • 小程子找Bug之for循环的初始化表达类型
  • 【美团】放它一马
  • 今日行情明日机会——20250827
  • 即时配送运营平台系统功能分析
  • 寄存器, 堆栈, 汇编指令详解
  • 入门概念|Thymeleaf与Vue
  • 企业微信对接 代理 WXJava Ngnix映射 weixin-java-cp
  • Vue 登录页高低分辨率背景图优化实现
  • mathtype公式存在乱码
  • SqlHelper类的方法详细解读和使用示例
  • Libvio访问异常排查指南
  • sql server 取起始日期到结束日期中自然月最后一天,与日期维度行转列
  • 数据治理:AI健康血液的生命线
  • Elasticsearch数据迁移快照方案初探(一):多节点集群配置踩坑记
  • Anaconda的安装与使用
  • 文本分块的优化策略-语义完整性、控制长度、重叠切分、结合模型,考虑大模型输入限制
  • matlab的app中传递数据
  • 林墨2025全新个人EP《嘻嘻呵呵嘿嘿哈哈》 第三支单曲解锁
  • 【数据分享】安徽省安庆市地理基础数据(道路、水系、铁路、行政边界(含乡镇)、DEM等)