百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

C# - 初识数组 033

liuian 2025-08-01 18:40 50 浏览

数组:是引用类型的数据结构;是一个存储同一数据类型元素有固定大小有顺序的集合;复杂数据类型的一种

数组的语法格式

//方式1
数据类型[] 数组名 = new 数据类型[数组的长度];
[]表示要声明的是一个数组//这里不是省略的意思
数据名:就是为数组起一个要求符合变量的命名规则的名字
new 数据类型[数据的长度] 表示在内存中开辟的数组长度
//声明数组时一定是可以表示正整数长度的数据如
//整形数字int,byte,或者可以转换为数组下标范围正整数的其他类型肉"0"等
//长度必须有,即使长度为0
//如 int[] nums = new int[0];开辟长度为0的数组
new 后面的数据类型必须与[]前面的类型一致
因为 数组声明时不存在隐式或显示类型转换
//int[] nums=new float[0]; //因此 此数组格式声明错误 
//==============================
int[] numbers = new int[10];
表示在内存开辟了10个可以存储int类型的空间
这一组空间的名称叫 numbers
数组中的numbers[下标]被称之为数组的一个变量
数组中的每个变量又被称之为 元素
可以通过下标或索引器访问数组的元素
第一个元素的下标是0,最后一个元素的下标是9,也就是:数组的长度-1
通过访问下标可以对每个元素进行赋值,修改与使用
numbers[9]=10;
为数组的元素numbers[9]赋值为10
//声明一个类型为int 名称为numbers 长度为10的 数组
int[] numbers = new int[10];
//通过下标为具体元素赋值
numbers[0] = 1;
numbers[9] = 10;
//打印输出数组元素
Console.WriteLine("numbers[9]={0}", numbers[9]);
//通过下标修改具体元素的值
numbers[9] = 100;//修改下标为9的元素其值变为100
//打印输出数组元素
Console.WriteLine("numbers[0]={0}", numbers[0]);
Console.WriteLine("numbers[9]={0}", numbers[9]);
Console.ReadKey();

数组名称,数组元素与元素的值在内存中的表现形式与关系

数组元素的赋值范围与数组的类型有关,与数组的长度无关

byte[] nums = new byte[258];
//byte类型的范围为0-255 
//声明数组长度 设置为258不会报错
//赋值/使用时不报错的情况
nums[258]=3;//与数组长度无关,即使声明数组长度为999999999
//赋值/使用时报错的情况
//超出byte的范围
nums[0]=256;//与赋值范围有关 
//=================================
//不建议这么做  没意义
byte[] nums = new byte[999999];

byte数组常用于如文件流等

数组的注意事项

1 声明什么类型的数组,数组中只能存储什么类型范围内(数组类)的数据; 如int类型的数组,其元素值只能赋值int类型,不能为其赋值其他类型的数据(除非可以转换为int类型)

由图中(行号33)可以看出只能赋值显示(强制)类型转换的数据,不能赋值隐式类型转换的数据

2 各个类型的元素都有自己类型的默认值

数组元素的默认值就是基本数据类型各自的默认值;单个使用的规则:声明一>赋值一>使用,必须赋初始值;基本数据类型放置在复杂数据类型中可以不必赋初始值

//单个使用
int num=6;//必须赋初始值后才能使用

复杂类型:1)枚举就是一个枚举成员的第一个(底层就是int类型,本例中) 2)结构与数组就是自己成员变量各个的类型的默认值

 class Program
 {
     enum MyEnum
        {
            男, 女
        }
     struct MyStruct
        {
            public string name;
            public int age;
        }
     static void Main(string[] args)
     {
         //基本数据类型的默认值
         int[] numbers = new int[1];//代表整形数值的与decimal类型 默认值为0
         float[] fs = new float[1];//代表float,double 默认值为0.0
         string[] s = new string[1];//代表string与object 默认值为null 
         char[] cs = new char[1];//默认值为0或ASCII码表的第一个
         bool[] bs = new bool[1];//默认值为false
         //复杂类型的默认值
         MyEnum Gender;
         MyStruct Info;
        MyEnum[] gs = new MyEnum[3];//枚举类型数组
        Student[] stus = new Student[3];//结构类型数组
     }
}

3 声明数组时必须确定数组的长度,长度一旦确定不可改变

上面数组的变形格式

//正确的格式
int[] nums2;//声明数组类型的变量
nums=new int[9];//比较常用
//错误的格式
int[] nums2=new nums;
nums[9];

必须确定数组的长度:

1)声明数组时要确定该数组需要在内存中开辟多大的空间

2)数组在内存中开辟的是连续的一段存储空间

数组没有添加/删除元素的方法,因此长度无法改变;可以通过两个数组实现另一种意义的改变数组长度(了解即可)

//假设不想要某些数据
int[] nums1 = new int[5];
//只需要下标为0,2,4的数据有3个元素
int[] nums2 = new int[3];
//将需要的数据存储在新数组中
nums2[0]=nums1[0];
nums2[1]=nums1[2];
nums2[2]=nums1[4];

4 使用下标访问元素时,下标也可以使用变量(必须在数组下标的范围内)

5 使用数组常见错误

1 数组元素所赋的值超出数组类型的范围,编程时VS会有提示,通过输入语句就会报错

2 赋值,访问时下标超出数组长度的范围

声明时的数字[255]表示数组长度是255,下标是0-254(长度-1)

另两种声明方式(了解即可)

//方式2 以元素个数定数组长度
//声明一个长度为3的数组
//等号右面一个大括号,括号中间每个元素用逗号隔开
//[]前面是什么类型,{}里面就必须使用什么类型的表示方式书写元素
//书写几个元素表示该数组长度就是多少
int[] nums={1,2,3};
string[] names={"zs","ls","ww"};//字符串数组 元素加双引号
//声明了有5个元素的char类型数组
char[] cs={'a','b','c','d','e'};//字符数组 元素加单引号
//其他类型以此类推
//=======================================
//方式3 声明时就给元素赋值初始化元素的值
//{ }在类或集合初始化时最常见
//类似的语法一般称为语法糖
//作用:简化编写代码
int[] nums=new int[]{1,2,3};//声明了一个长度为3的int类型数组
int[] nums=new int[3]{1,2,3};//[]中的长度可以省略
//==========================
//错误格式 []中确定了长度 但{}中元素多/少写
//编程时VS有提示
int[] nums=new int[3]{1,2};
int[] nums=new int[3]{1,2,3,5};

反编译查看3种声明方式的区别

使用数组的益处:1)相当于一次声明多个数类型相同的变量 2)数组元素在内存的存储是连续的 3)可以使用循环进行操作

相关推荐

驱动网卡(怎么从新驱动网卡)
驱动网卡(怎么从新驱动网卡)

网卡一般是指为电脑主机提供有线无线网络功能的适配器。而网卡驱动指的就是电脑连接识别这些网卡型号的桥梁。网卡只有打上了网卡驱动才能正常使用。并不是说所有的网卡一插到电脑上面就能进行数据传输了,他都需要里面芯片组的驱动文件才能支持他进行数据传输...

2026-01-30 00:37 liuian

win10更新助手装系统(微软win10更新助手)

1、点击首页“系统升级”的按钮,给出弹框,告诉用户需要上传IMEI码才能使用升级服务。同时给出同意和取消按钮。华为手机助手2、点击同意,则进入到“系统升级”功能华为手机助手华为手机助手3、在检测界面,...

windows11专业版密钥最新(windows11专业版激活码永久)

 Windows11专业版的正版密钥,我们是对windows的激活所必备的工具。该密钥我们可以通过微软商城或者通过计算机的硬件供应商去购买获得。获得了windows11专业版的正版密钥后,我...

手机删过的软件恢复(手机删除过的软件怎么恢复)
手机删过的软件恢复(手机删除过的软件怎么恢复)

操作步骤:1、首先,我们需要先打开手机。然后在许多图标中找到带有[文件管理]文本的图标,然后单击“文件管理”进入页面。2、进入页面后,我们将在顶部看到一行文本:手机,最新信息,文档,视频,图片,音乐,收藏,最后是我们正在寻找的[更多],单击...

2026-01-29 23:55 liuian

一键ghost手动备份系统步骤(一键ghost 备份)

  步骤1、首先把装有一键GHOST装系统的U盘插在电脑上,然后打开电脑马上按F2或DEL键入BIOS界面,然后就选择BOOT打USDHDD模式选择好,然后按F10键保存,电脑就会马上重启。  步骤...

怎么创建局域网(怎么创建局域网打游戏)

  1、购买路由器一台。进入路由器把dhcp功能打开  2、购买一台交换机。从路由器lan端口拉出一条网线查到交换机的任意一个端口上。  3、两台以上电脑。从交换机任意端口拉出网线插到电脑上(电脑设置...

精灵驱动器官方下载(精灵驱动手机版下载)

是的。驱动精灵是一款集驱动管理和硬件检测于一体的、专业级的驱动管理和维护工具。驱动精灵为用户提供驱动备份、恢复、安装、删除、在线更新等实用功能。1、全新驱动精灵2012引擎,大幅提升硬件和驱动辨识能力...

一键还原系统步骤(一键还原系统有哪些)

1、首先需要下载安装一下Windows一键还原程序,在安装程序窗口中,点击“下一步”,弹出“用户许可协议”窗口,选择“我同意该许可协议的条款”,并点击“下一步”。  2、在弹出的“准备安装”窗口中,可...

电脑加速器哪个好(电脑加速器哪款好)

我认为pp加速器最好用,飞速土豆太懒,急速酷六根本不工作。pp加速器什么网页都加速,太任劳任怨了!以上是个人观点,具体性能请自己试。ps:我家电脑性能很好。迅游加速盒子是可以加速电脑的。因为有过之...

任何u盘都可以做启动盘吗(u盘必须做成启动盘才能装系统吗)

是的,需要注意,U盘的大小要在4G以上,最好是8G以上,因为启动盘里面需要装系统,内存小的话,不能用来安装系统。内存卡或者U盘或者移动硬盘都可以用来做启动盘安装系统。普通的U盘就可以,不过最好U盘...

u盘怎么恢复文件(u盘文件恢复的方法)

开360安全卫士,点击上面的“功能大全”。点击文件恢复然后点击“数据”下的“文件恢复”功能。选择驱动接着选择需要恢复的驱动,选择接入的U盘。点击开始扫描选好就点击中间的“开始扫描”,开始扫描U盘数据。...

系统虚拟内存太低怎么办(系统虚拟内存占用过高什么原因)

1.检查系统虚拟内存使用情况,如果发现有大量的空闲内存,可以尝试释放一些不必要的进程,以释放内存空间。2.如果系统虚拟内存使用率较高,可以尝试增加系统虚拟内存的大小,以便更多的应用程序可以使用更多...

剪贴板权限设置方法(剪贴板访问权限)
剪贴板权限设置方法(剪贴板访问权限)

1、首先打开iphone手机,触碰并按住单词或图像直到显示选择选项。2、其次,然后选取“拷贝”或“剪贴板”。3、勾选需要的“权限”,最后选择开启,即可完成苹果剪贴板权限设置。仅参考1.打开苹果手机设置按钮,点击【通用】。2.点击【键盘】,再...

2026-01-29 21:37 liuian

平板系统重装大师(平板重装win系统)

如果你的平板开不了机,但可以连接上电脑,那就能好办,楼主下载安装个平板刷机王到你的个人电脑上,然后连接你的平板,平板刷机王会自动识别你的平板,平板刷机王上有你平板的我刷机包,楼主点击下载一个,下载完成...

联想官网售后服务网点(联想官网售后服务热线)

联想3c服务中心是联想旗下的官方售后,是基于互联网O2O模式开发的全新服务平台。可以为终端用户提供多品牌手机、电脑以及其他3C类产品的维修、保养和保险服务。根据客户需求层次,联想服务针对个人及家庭客户...