【C#基础学习】第十七章、数组

news2024/11/9 0:40:58

目录

数组

1.数组的类型

1.1 一维数组和矩形数组

1.1.1实例化一维数组和矩形数组

1.2 访问数组元素

1.3 初始化数组

1.3.1 显式初始化一维数组

1.3.2 显式初始化矩形数组

 1.3.3 显式初始化的快捷语法

 1.3.4 隐式类型数组

1.4 交错数组 

1.4.1 声明交错数组

1.4.2 实例化交错数组

1.4.3 实例化交错数组的快捷方法

1.5 交错数组和矩形数组的区别

2.数组的补充

2.1 Clone方法


数组

 数组的定义:

  • 由一个变量表示一组同类型的数据元素。
    • 元素:数组的独立数据项称为元素。数组的所有元素必须是相同类型的,或继承自相同的类型。
    • 维度/秩:数组的维度称为秩。
    • 维度长度:每一个维度方向的长度。
    • 数组长度:数组所有维度中的元素总数。
  • 每个数据元素通过该变量名称和方括号中的索引来访问。
  • 数组是引用类型
    • 数组元素可以是引用类型,也可以是值类型
    • 若存储的数组元素都是引用类型,数组称为引用类型数组
    • 若存储的数组元素都是值类型,数组称为值类型数组
1.1数组的结构

1.2 数组元素的存储

访问数组元素的语法:

                        数组名[索引]

 使用数组的要求:

  • C#不支持动态数组。数组一旦被创建,大小就固定了。
  • 索引是从0开始的。


1.数组的类型

数组的类型有两种:一维数组和多维数组

  • 一维数组:可以认为是单行元素或元素向量
  • 多维数组:由主向量中的位置组成,每一个位置本身又是一个数组,称为子数组。

多维数组也有两种:矩形数组和交错数组

  • 矩形数组:某个维度所有子数组具有相同长度的多维数组,且不管有多少维度,总是一组方括号
  • 交错数组:每一个子数组都是独立数组的多维数组,可以有不同长度的子数组

图示: 

        

1.1数组类型图示

1.1 一维数组和矩形数组

(因为一维数组和矩形数组非常相似,所以放一起讲)

声明一维数组、矩形数组的语法:

                数组类型[ ]  数组名;

示例:

                int[ ]  a;        //一维整形数组a

                int[ ]  b;       //二维整形数组b

注:和C、C++不同,C#声明数组时,方括号在数组类型后。而不是数组名后。 

 声明一维数组、矩形数组的要求:

  • 不能在方括号中放数组维度长度。
  • 数组声明后,维度数是固定的。

1.1.1实例化一维数组和矩形数组

实例化一维数组、矩形数组的语法(数组创建表达式):

                数组类型[ ]  数组名=new 数组类型[...];

示例:

                int[]  a = new int[5];        //一维整形数组a,含有5个元素

                int[]  b = new int[2,5];       //二维整形数组b,含有10个元素

注:和C、C++不同,C#声明数组时,方括号在数组类型后。而不是数组名后。

 

图示:

        

声明和实例化数组

注意:与对象创建表达式不一样,数组创建表达式不包含圆括号。 

1.2 访问数组元素

访问数组元素的语法:

                        数组名[索引]

示例:

数组元素的访问

1.3 初始化数组

 初始化数组的定义:当数组被创建时,每一个元素会自动初始化类型的值。而显式初始化相当于手动(自己定义)初始化类型的值。

  • 自动初始化的默认值:整形为0,浮点为0.0,布尔型为false,引用为null。
数组的初始化

 

 

1.3.1 显式初始化一维数组

 

一维数组显式初始化

 

1.3.2 显式初始化矩形数组

二维数组显式初始化

 

三维数组显式初始化

 1.3.3 显式初始化的快捷语法

快捷语法

 1.3.4 隐式类型数组

隐式类型数组的定义:指数组类型用var关键字来推断数组类型。

隐式类型数组的语法:

                         var[ ]  数组名 = new[ , ]  {...}; 

 

1.4 交错数组 

交错数组的定义:数组的数组。

图示:

交错数组

 

1.4.1 声明交错数组

声明交错数组的语法:

                        数据类型[ ][ ]  数组名;

                        数据类型[ ][ ][ ]  数组名; 

 

声明交错数组的要求:

  • 维度必须大于1
  • 不能在方括号中放数组维度长度。

1.4.2 实例化交错数组

由于交错数组是独立数组的数组,所以每一个数组必须独立创建。

实例化交错数组的步骤:

  • 实例化顶层数组
  • 分别实例化每一个子数组,把新建数组的引用赋给它们所属数组的合适元素。
实例化交错数组的步骤

 

1.4.3 实例化交错数组的快捷方法

快捷方法

 

1.5 交错数组和矩形数组的区别

交错数组和矩形数组的结构

2.数组的补充

2.1 Clone方法

 Clone方法的作用:创建数组本身的副本。

 Clone方法的语法:

                int[] Arr1={1,2,3};

                int[] Arr2=(int[])Arr1.Clone();

Clone方法图解

 

 使用Clone方法的要求:

  • Clone方法返回的是object类型的引用,它必须被强制转换成数组类型。

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

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

相关文章

bump map(凹凸贴图)的一个简单生成方法

用于渲染物体表面,增加真实感的bump map(凹凸贴图)的一个简单生成方法。 1. 在 Perlin Noise Map Generator - OpenProcessing 生成一个perlin noise map, 点击代码按钮,修改生成图像的分辨率 点击 paly 按钮,设置参数&#xf…

学习笔记-3-SVM-10-SVR

细节内容请关注微信公众号:运筹优化与数据科学 ID: pomelo_tree_opt outline 1. Linear regression 2. Support vector regression 3. SVR vs. SVM 4. Linear SVR 5. Kernel SVR ------------------------------------ 1. Linear regression OR里最常使用的…

【从零开始学习深度学习】15. Pytorch实战Kaggle比赛:房价预测案例【含数据集与源码】

基于之前学习的内容,让我们动手实战一个Kaggle比赛的:房价预测实战案例。Kaggle是一个著名的供机器学习爱好者交流的平台,该房价预测实战网址:https://www.kaggle.com/competitions/house-prices-advanced-regression-techniques …

浅析Linux 内存布局

【推荐文章】 路由选择协议——RIP协议 纯干货,linux内存管理-内存管理架构(建议收藏) 轻松学会linux下查看内存频率,内核函数,cpu频率 X86体系结构 在X86体系结构下,物理内存地址一般从0x0000_0000开始,而Linux内核主…

微信小程序实战之获取用户信息并保存唯一实例

前言 这是我参加掘金启航计划的第二篇文章,这次总结的是获取用户信息并联合 mobx 状态管理库,保存全局唯一的用户对象。 本篇文章基于 微信云开发 ,数据从云数据库中取出,使用微信云数据库API进行获取数据,希望观众老…

Altium Designer飞线不从过孔里面出线如何解决?

出现以上飞线不从过孔出线的原因是其拓扑结构所导致,解决方式就是设置下拓扑结构。 1、执行菜单栏命令“设计-规则”,或者快捷键DR,快速打开“PCB规则及约束编辑器”对话框,如图1所示。 2、在对应的对话框中,选择“Rou…

postgres源码解析41 btree索引文件的创建--2

本文将从btbuild函数作为入口从源码角度进行讲解btree文件的创建流程,执行SQL对应为CREATE TABLE wp_shy(id int primary key, name carchar(20))。知识回顾见:postgres源码解析41 btree索引文件的创建–1 执行流程图梳理 _bt_spools_heapscan 执行流程…

2153年,人类已被AI所奴役。就在这一天,作为一名被俘虏的“搜查部队”士兵,你来到了A0007号城外的反抗军基地中

2153年,地球。   人类,已被AI所奴役。   这个AI的缩写名为——PTA,或称“辟塔”。      辟塔的原型,是一个用于分析网络用户消费倾向并立即给出相关引导的软广告程序。   很快,辟塔便成了广大商家的宠儿&…

【华为上机真题 2022】求解连续数列

🎈 作者:Linux猿 🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊! &…

MatLab SimuLink国产代替

MATLab SimuLink国产代替 米国的限制,把工业软件的国产化推到风口浪尖,作为扎根工业软件开源基础架构20多年的UCanCode, 一直是国外顶尖工业软件的基础架构提供商之一。许多国外软件都在这个基础上构建出来,这里我们也希望探讨一下国产代替Ma…

乐享元游的 UWA Pipeline 最佳实践分享

“躬身入局 践行游戏研发工业化”是UWA在2022年研发上坚持的方向,其中UWA Pipeline更是今年在工业化部署上的一个重要的突破口。在近一年里,越来越多的游戏研发团队在日常项目生产开发中,使用UWA Pipeline搭建了符合自身需求的DevOps研发交付…

fat32文件系统分析

fat32文件系统结构: fat32文件系统比fat16文件系统少了根目录FDT,其实是将根目录归结到数据区中了。 注意数据区第一个扇区所在蔟为2号蔟。 首先在磁盘管理中创建一个fat32磁盘: 大小为16GB。 使用winhex打开磁盘。 可以看到MBR在扇区0处…

AI推理卡/tensorRT c++

#####AI 推理卡:我的需求是x86上Nvidia显卡训练好的模型 用在AI推理卡上进行推理### AI 推理卡 环境配置 安装ubuntu系统、AI推理卡环境 1,安装ubuntu20.04.4 过程忽略,网上教程很多。 2,ubuntu20.04.4设置root登录&#xf…

入门系列 - Git基本操作

本篇文章,是基于我自用Linux系统中的自定义文件夹“test_rep”,当做示例演示 具体Git仓库的目录在:/usr/local/git/test_rep Git基本操作 之前我们已经创建了 Git 版本库了,下一步我们将进行一些 Git 的基本操作。 有关 Git 版本…

微服务框架 SpringCloud微服务架构 28 数据同步 28.3 声明队列和交换机

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构28 数据同步28.3 声明队列和交换机28.3.1 直接开干28 数据同步 28.3 声明…

【Mybatis】一级缓存和二级缓存

【Mybatis】一级缓存和二级缓存(一)为什么需要缓存(二)一级缓存(在SqlSession上缓存)【1】示例代码【2】增删改操作会刷新一级缓存【3】一级缓存流程总结(1)一级缓存简介&#xff08…

多点DMALL冲刺港股:年亏损超9亿 腾讯IDG金蝶是股东

雷递网 雷建平 12月8日多点数智有限公司(简称:“多点数智”)日前递交招股书,准备在港交所上市。年亏损超9亿多点DMALL成立于2015年,为本地零售业提供基于云的一站式端到端的数字零售SaaS平台。多点DMALL提供的服务包括…

搜索是过拟合的生成;生成是欠拟合的搜索

神经搜索的最大竞争者可能来自于一种甚至不需要向量嵌入作为中间表示的技术 —— 一种直接返回你想要的结果的端到端技术。"那么,谁将是神经搜索最大的竞争对手?"本文作者:肖涵,Jina AI 创始人兼 CEO 谁将是神经搜索最大…

Redis框架(二):SpringDataRedis入门和序列化方式解决内存占用问题

SpringDataRedis入门和序列化方式解决内存占用问题基本介绍实例Demo自定义RedisTemplate序列化自定义的RestTemplate的内存占用问题StringRedisTemplate解决内存占用问题总结SpringCloud章节复习已经过去,新的章节Redis开始了,这个章节中将会回顾Redis 主…

c#入门-可选参数,不定长参数

可选参数 声明可选参数 函数的参数在声明时,可以同时为其赋值一个常量。 但是所有这样的参数,需要在所有必填参数的后面。 void Any(int i 10) {Console.WriteLine(i); }使用可选参数 稍后,在调用函数时,你可以不填可选参数。…