C# 图解教程 第5版 —— 第13章 数组

文章目录

    • 13.1 数组
      • 13.1.1 定义
      • 13.1.2 重要细节
    • 13.2 数组的类型
    • 13.3 数组是对象
    • 13.4 一维数组和矩形数组
    • 13.5 实例化一维数组或矩形数组
    • 13.6 访问数组元素(*)
    • 13.7 初始化数组
      • 13.7.1 显示初始化一维数组
      • 13.7.2 显示初始化矩形数组
      • 13.7.3 初始化矩形数组的语法点(*)
      • 13.7.4 快捷语法
      • 13.7.5 隐式类型数组
      • 13.7.6 综合内容(*)
    • 13.8 交错数组
      • 13.8.1 声明交错数组
      • 13.8.2 快捷实例化
      • 13.8.3 实例化交错数组
      • 13.8.4 交错数组中的子数组(*)
    • 13.9 比较矩形数组和交错数组
    • 13.10 foreach 语句
      • 13.10.1 迭代变量是只读的
      • 13.10.2 foreach 语句和多维数组
    • 13.11 数组协变
    • 13.12 数组继承的有用成员
    • 13.13 比较数组类型
    • 13.14 数组与 ref 返回和 ref 局部变量

13.1 数组

13.1.1 定义

  • 元素:数组的独立数据项。
  • 秩/维度:数组的维度数称作秩。
  • 维度长度:每个维度方向的位置个数。
  • 数组长度:所有维度中的元素总数。

13.1.2 重要细节

  • 数组一旦创建就固定了。C# 不支持动态数组。
  • 数组索引号从 0 开始。

13.2 数组的类型

​ C# 提供以下两种类型的数组:

  1. 一维数组。

  2. 多维数组。

    • 矩形数组。

      • 某个维度的所有子数组长度相同。
      • 仅使用一组方括号表示。
    • 交错数组。

      • 每个子数组都是独立的。
      • 可以有不同长度的子数组。
      • 每一个维度使用一个方括号表示。
image-20231028233858258
图13.1 一维数组、矩形数组及交错数组

13.3 数组是对象

​ 数组是继承了 System.Array 类型的对象,具有 BCL 基类中很多有用的成员:

  • Rank:属性,返回数组的维度。
  • Length:属性,返回数组的长度。
image-20231028234121805
图13.2 数组的结构

13.4 一维数组和矩形数组

声明一维数组或多维数组

​ 在类型和变量名称之间使用方括号声明数组,方括号内的逗号是秩说明符,指定了数组的维度数:秩 = 逗号数 + 1。

  • 可以有任意多个秩说明符(逗号)。
  • 不能在数组类型区域中放数组维度长度(维度长度不是类型的一部分)。
  • 数组声明后,维度就固定了。而维度长度直到数组实例化时才决定。
image-20231028234602373
图13.3 数组的声明

13.5 实例化一维数组或矩形数组

​ 使用 new 运算符实例化:

image-20231028235251526 image-20231028235303201 image-20231028235316531
图13.4 声明和实例化数组

13.6 访问数组元素(*)

13.7 初始化数组

​ 数组被创建后,每个元素被自动初始化为类型的默认值。

  • 整型:0。
  • 浮点型:0.0。
  • 布尔型:false。
  • 引用类型:null。

13.7.1 显示初始化一维数组

​ 使用初始化列表进行初始化:

  • 初始值以逗号分隔,封闭在大括号内。
  • 不必输入维度长度,编译器可以进行推断。
image-20231028235950901
图13.5 一维数组的显示初始化

13.7.2 显示初始化矩形数组

  • 每个初始值向量必须封闭在大括号内。
  • 每个维度必须嵌套并封闭在大括号内。
  • 每个维度的初始化列表和组成部分也使用逗号分隔。
image-20231029000205626
图13.6 初始化矩形数组

13.7.3 初始化矩形数组的语法点(*)

13.7.4 快捷语法

​ 可以省略语法的数组创建表达式部分,只提供初始化部分:

image-20231029000836345
图13.7 声明、创建以及初始化数组的快捷语法

13.7.5 隐式类型数组

​ 由于智能的编译器,可以使用 var 关键字进一步简化声明隐式数组:

image-20231029001138210
图13.8 使用 var 声明隐式类型数组

13.7.6 综合内容(*)

13.8 交错数组

13.8.1 声明交错数组

  • 和矩形数组一样,数组类型声明部分不能包含维度长度。
image-20231029001527294
图13.9 声明交错数组

13.8.2 快捷实例化

​ 可以快捷创建顶层数组的声明:

image-20231029001753063 image-20231029001807546 image-20231029001819337
图13.10 快捷最高级别实例化

13.8.3 实例化交错数组

​ 交错数组的初始化不能在一个步骤中完成,需要以下步骤:

  1. 实例化顶层数组。
  2. 分别实例化每一个子数组。
image-20231029002021158
图13.11 创建二维交错数组

13.8.4 交错数组中的子数组(*)

13.9 比较矩形数组和交错数组

​ 图 13.12 展示了保存 9 个整数的矩形数组和交错数组。矩形数组只有单个数组对象,而交错数组有 4 个数组对象。

image-20231029234022522
图13.12 比较矩形数组和交错数组的结构

​ CIL 中,一维数组有特定的性能优化指令,而矩形数组没有。因此,有时使用一维数组的交错数组比矩形数组更高效。

13.10 foreach 语句

13.10.1 迭代变量是只读的

  • 对于值类型数组,不能改变数组元素。
  • 对于引用类型数组,不能改变引用,可以通过迭代变量改变数据。

13.10.2 foreach 语句和多维数组

  1. 矩形数组

    维度处理次序为从右向左,每个维度从 0 开始递增。递增满时,重置为 0,左方维度索引递增。

  2. 交错数组

    必须为每一个维度使用独立的 foreach 语句。

13.11 数组协变

​ **数组协变:**即使某个对象不是数组的基类型,也可以把它赋值给数组元素。发生的条件如下:

  • 为引用类型数组。
  • 在复制对象和数组基类型之间有隐式或显示转换。
image-20231029235139038 image-20231029235212543 image-20231029235229032
图13.13 数组出现协变

13.12 数组继承的有用成员

表13.1 数组继承的一些有用成员
image-20231029235310161

13.13 比较数组类型

表13.2 比较数组类型的总结
image-20231029235426636

13.14 数组与 ref 返回和 ref 局部变量

image-20231029235615041
图13.14 数组 ref 返回与局部变量示例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/124150.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

订水商城H5实战教程-05权限控制

目录 1 判断用户是否登录2 创建事件流3 获取不到Userid的问题4 权限控制整体效果 我们上一篇讲解了用户注册的功能,当用户注册完毕的时候再次打开小程序的时候就需要验证权限。权限分为两类,第一类是判断用户是否注册,第二类是当前用户具备什…

3D RPG Course | Core 学习日记二:PolyBrush / Pro Builder构建场景

前言 我们这次将要学习的是使用PolyBrush和Pro Buillder构建精美的游戏场景。 PolyBrush 在Package Manager中导入的时候要注意,将Shader Examples(URP)也一起导入,不然PolyBrush对URP渲染的素材进行操作时会出现问题。 导入完成之后在Tools里将…

【智能座舱系列】- 深度解密小米Hyper OS,华为HarmonyOS区别

上一篇文章《小米的澎湃OS到底牛不牛?与鸿蒙系统之间差距有多大》,从多个方面比较了小米Hyper OS 与 华为HarmonyOS的区别,本篇文章继续从架构层面深度解读两者本质的区别。 小米澎湃OS是“以人为中心,打造人车家全生态操作系统”,该系统基于深度进化的Android以及自研的V…

C/C++网络编程基础知识超详细讲解第二部分(系统性学习day12)

懒大王感谢大家的关注和三连支持~ 目录 前言 一、UDP编程 UDP特点: UDP框架: UDP函数学习 发送端代码案例如下: 二、多路复用 前提讲述 select poll 三、图解如下 总结 前言 作者简介: 懒大王敲代码,…

7 款用于解锁iPhone密码的苹果解锁软件

无法访问您的 iPhone 一定是最烦人的情况之一。 即使您以前从未遇到过这种情况,做好准备总是一个好主意,而不是在它发生时感到无助。事实上,这种情况经常发生并且可能有很多实例,例如忘记密码或购买锁定的二手 iPhone。 牢记 Ap…

表白墙/留言墙 —— 初级SpringBoot项目,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学

🧸欢迎来到dream_ready的博客,📜相信你对这篇博客也感兴趣o (ˉ▽ˉ;) 用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程 目录 项目前端页面展…

CTFHub | MySQL流量、Redis流量、MongoDB流量的WriteUp

文章目录 MySQL流量题目题解 Redis流量题目题解 MongoDB流量题目题解 数据库类流量题需要用到Wireshark截取数据包,然后进行分析。 WireShark是非常流行的网络封包分析工具,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程…

python采集电商jd app搜索商品数据(2023-10-30)

一、技术要点: 1、cookie可以从手机app端用charles抓包获取; 2、无需安装nodejs,纯python源码; 3、搜索接口为:functionIdsearch; 4、clientVersion "10.1.4"同时也支持更高的版本; …

“道法自然——徐铭中国画展”在中国美术馆隆重开幕

10月28日上午,“道法自然——徐铭中国画作品展”在中国美术馆隆重开幕。本次展览由中国科学院大学、民盟中央美术院联合主办。第十四届全国人大常委会委员、财政经济委员会副主任委员、民盟中央副主席谢经荣,第十四届全国政协副秘书长、民盟中央副主席、…

数字孪生智慧工厂三维可视化系统解决方案,打造新一代智慧工厂

在制造业的快速发展和数字化转型的时代,智慧工厂已经成为制造企业前进的必经之路。数字孪生技术,作为工业数字化转型的核心动力,为打造智慧工厂提供了关键支持。其中,数字孪生智慧工厂三维可视化系统解决方案无疑是制造企业的得力…

2023深耕kotlin,谈谈前景

为什么学习kotlin? Kotlin 早就已经是 Google 官方推荐的开发语言了,而且 Android 新的 Compose 框架只支持 Kotlin ,在 Google 那里,Android开发中 Java 其实已经被淘汰了。Java 和 Kotlin 虽然都属于高级语言,但是 …

Python 自动化测试全攻略:五种自动化测试模型实战详解!

随着移动互联网的发展,软件研发模型逐步完善,软件交付质量越来越受到软件公司的重视,软件测试技术特别是自动化测试技术开始在软件系统研发过程中发挥着越来越重要的作用。 与传统的手工测试技术相比,自动化测试具备了良好的可操…

iPhone无法关机未必是坏了!如何修复无法关闭的iPhone

iPhone运行很慢且发热是一个比较罕见的情况,但如果它发生在你身上,下面解释了发生的原因以及你如何修复它。 iPhone无法关闭的原因 iPhone无法关闭的最可能原因是: 由于软件问题,它被冻结了。 睡眠/唤醒按钮坏了。 屏幕坏了&a…

服务器感染了.mxdown-V-XXXXXXXX勒索病毒,如何确保数据文件完整恢复?

尊敬的读者: 在当今数字化时代,网络犯罪的阴谋在虚拟世界中蔓延,mxdown-V-XXXXXXXX、.vollhavhelp-V-XXXXXXXX、.arricklu-V-XXXXXXXX勒索病毒是其中的恶梦般存在,这三种勒索病毒均属于同一个勒索病毒家族旗下。这种勒索病毒以其…

真心话坦白局系统源码

它具有匿名信息的神秘感 但又会给你一点小提示 能让你有无限挖掘下去的好奇感 也能让你说出那些不敢说出口的话 敢来一场坦白局吗! 坦白局这个功能类似于悄悄话,只不过是匿名的悄悄话。 有时候我们有些话是开不了口的,坦白局给了我们一个…

【音视频|PCM】PCM格式详解

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

jenkins详细安装教程

这里写目录标题 一、Jenkins安装与部署1-1、Jenkins的简介1-2、下载需要的软件1-2-1 jekins.war1-2-2 tomcat安装方式 1-3、使用11版本的jdk1-4、开启jenkins1-5、获取密码1-5 修改镜像(可改可不改) 二、卸载Jenkins 一、Jenkins安装与部署 1-1、Jenkins的简介 Jenkins是一个…

比较浮点数时,我被绊倒了

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不是…