网站首页 > 知识剖析 正文
在 C# 中,数组的长度和范围的定义涉及到数组的基础特性以及相关属性和索引的使用。以下是对数组长度和范围的详细说明:
1.数组的长度
C# 中的数组是固定大小的,一旦声明,数组的大小(长度)就无法更改。数组的长度是指数组中元素的总数,包含在数组声明时分配的所有元素。
- 定义数组长度的方式: 数组的长度是在创建数组时定义的,例如:
- int[] numbers = new int[5]; // 长度为 5
- 通过属性获取长度: 可以使用 Length 属性获取数组的长度:
- Console.WriteLine(numbers.Length); // 输出: 5
- 多维数组的长度: 对于多维数组,Length 返回的是所有元素的总数,而 GetLength(int dimension) 方法可以获取指定维度的长度:
- int[,] matrix = new int[3, 4]; Console.WriteLine(matrix.Length); // 输出: 12 (总元素数) Console.WriteLine(matrix.GetLength(0)); // 输出: 3 (第1维长度) Console.WriteLine(matrix.GetLength(1)); // 输出: 4 (第2维长度)
2.数组的范围
数组的范围是指数组中有效索引值的范围。
- 一维数组的范围: 数组的索引从 0 开始,到 Length - 1 结束。例如:
- int[] numbers = new int[5]; // 长度为 5 // 有效范围为 0 到 4 numbers[0] = 1; // 有效 numbers[4] = 5; // 有效 // numbers[5] = 6; // 无效,抛出 IndexOutOfRangeException 异常
- 多维数组的范围: 每个维度的索引范围由对应维度的长度决定。例如:
- int[,] matrix = new int[3, 4]; // 3 行 4 列 // 第 1 维(行)的范围是 0 到 2 // 第 2 维(列)的范围是 0 到 3 matrix[0, 0] = 1; // 有效 matrix[2, 3] = 12; // 有效 // matrix[3, 3] = 13; // 无效,抛出 IndexOutOfRangeException 异常
- 基于范围的操作(切片): 从 C# 8.0 开始,数组支持基于范围的索引操作:
- int[] array = { 1, 2, 3, 4, 5 }; int[] slice = array[1..4]; // 从索引 1 到 4(不包括 4),结果为 { 2, 3, 4 }
3.常见问题
- 长度为零的数组: 数组可以声明为长度为零,表示数组中没有任何元素:
- int[] emptyArray = new int[0]; Console.WriteLine(emptyArray.Length); // 输出: 0
- 数组越界异常: 如果尝试访问超出有效范围的索引,C# 将抛出 IndexOutOfRangeException。
- int[] numbers = { 1, 2, 3 }; // Console.WriteLine(numbers[3]); // 抛出异常
总结
- 数组长度: 使用 Length 或 GetLength(int dimension) 获取。
- 数组范围: 索引从 0 到 Length - 1,多维数组需要分别考虑每个维度的范围。
- 边界检查: C# 提供内置边界检查功能,避免访问无效索引。
这使得 C# 的数组在操作时具有较高的安全性,同时也提供了多种方法来操作数组长度和范围。
- 上一篇: 快速了解JavaScript的表单操作
- 下一篇: Java中字符串的长度值
猜你喜欢
- 2025-03-11 C语言sizeof()、strlen()、string的length()和size()的用法
- 2025-03-11 C# 基础知识系列- 3 集合数组
- 2025-03-11 HashMap数组长度为什么是2的n次方
- 2025-03-11 C语言字符数组和字符串
- 2025-03-11 JUC并发—8.并发安全集合一
- 2025-03-11 大话C语言:数组
- 2025-03-11 你会喜欢的新数组方法:array.at(index)
- 2025-03-11 数组-一文搞定前缀和数组
- 2025-03-11 灵魂拷问:如何检查 Java 数组中是否包含某个值?
- 2025-03-11 Java中怎样将bytes转换为long类型?
- 最近发表
-
- jQuery EasyUI使用教程:创建展开行详细编辑表单的CRUD应用
- CSDN免登陆复制代码的几种方法(csdn扫码登录怎么实现的)
- LayUi提高-Select控件使用(layui form select)
- 用 Playwright MCP 让 AI 改它自己写的屎山代码
- multiple-select.js中手动设置全选和取消全选
- 前端实现右键自定义菜单(html 自定义右键菜单)
- JavaScript脚本如何断言select下拉框的元素内容?
- 广州蓝景分享—实用的CSS技巧,助你成为更好的前端开发者
- MyBatis-Plus码之重器 lambda 表达式使用指南,开发效率瞬间提升80%
- Go语言之select的使用和实现原理(go select case)
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)