首页 > 编程语言 >5.2 C# 数组声明与初始化全解

5.2 C# 数组声明与初始化全解

时间:2024-09-24 15:49:05浏览次数:3  
标签:5.2 C# 元素 数据类型 int 数组名 数组 new 全解

文章目录


5.2.1 C#数组声明

5.2.1 C# 数组声明

1. 声明数组的语法格式

在C#中,声明数组的基本语法格式如下:

数据类型[] 数组名;

其中:

  • 数据类型:表示数组中存储的元素类型,可以是任何有效的C#数据类型,如 intdoublestring 等。
  • []:方括号表示这是一个数组。
  • 数组名:是你为数组选择的名称,遵循C#的变量命名规则。
2. 声明一维数组的语法格式
格式1:声明但不初始化
数据类型[] 数组名;

例如:

int[] numbers; // 声明一个整数数组
string[] names; // 声明一个字符串数组

在这种情况下,数组只是被声明了,但还没有分配内存空间。你需要使用 new 关键字来分配内存并初始化数组:

numbers = new int[5]; // 分配5个整数的内存空间
names = new string[3]; // 分配3个字符串的内存空间
格式2:声明并初始化

你可以在声明数组的同时初始化它,这是一维数组的常见做法。有两种方式:

方式1:使用 new 关键字
数据类型[] 数组名 = new 数据类型[数组长度] { 元素列表 };

例如:

int[] numbers = new int[5] { 1, 2, 3, 4, 5 }; // 声明并初始化一个包含5个整数的数组
string[] names = new string[3] { "Alice", "Bob", "Charlie" }; // 声明并初始化一个包含3个字符串的数组
方式2:省略 new 关键字
数据类型[] 数组名 = { 元素列表 };

例如:

int[] numbers = { 1, 2, 3, 4, 5 }; // 声明并初始化一个包含5个整数的数组
string[] names = { "Alice", "Bob", "Charlie" }; // 声明并初始化一个包含3个字符串的数组

这种方式更加简洁,编译器会自动推断数组的长度和类型。

总结

  • 声明数组的基本语法数据类型[] 数组名;
  • 声明一维数组的两种格式
    • 格式1:声明但不初始化,随后使用 new 关键字分配内存。
    • 格式2:声明并初始化,可以使用 new 关键字或省略 new 关键字。

这些语法格式帮助你在C#中灵活地声明和初始化一维数组,为后续的操作打下基础。

5.2.2 C# 数组的初始化

5.2.2 C# 数组的初始化

在C#中,数组的初始化是指在声明数组时或之后为其分配内存并设置初始值。初始化数组有多种方式,下面详细介绍这些方法。

1. 声明并初始化数组
1.1 使用 new 关键字
数据类型[] 数组名 = new 数据类型[数组长度] { 元素列表 };

示例:

int[] numbers = new int[5] { 1, 2, 3, 4, 5 }; // 声明并初始化一个包含5个整数的数组
string[] names = new string[3] { "Alice", "Bob", "Charlie" }; // 声明并初始化一个包含3个字符串的数组
1.2 省略 new 关键字
数据类型[] 数组名 = { 元素列表 };

示例:

int[] numbers = { 1, 2, 3, 4, 5 }; // 声明并初始化一个包含5个整数的数组
string[] names = { "Alice", "Bob", "Charlie" }; // 声明并初始化一个包含3个字符串的数组
2. 声明后初始化数组
2.1 使用 new 关键字
数据类型[] 数组名;
数组名 = new 数据类型[数组长度] { 元素列表 };

示例:

int[] numbers;
numbers = new int[5] { 1, 2, 3, 4, 5 }; // 声明后初始化一个包含5个整数的数组
string[] names;
names = new string[3] { "Alice", "Bob", "Charlie" }; // 声明后初始化一个包含3个字符串的数组
2.2 默认初始化

当你声明数组但没有立即初始化时,数组的每个元素会被自动初始化为其默认值。对于数值类型,默认值是0;对于引用类型,默认值是null

示例:

int[] numbers = new int[5]; // 声明一个包含5个整数的数组,所有元素默认为0
string[] names = new string[3]; // 声明一个包含3个字符串的数组,所有元素默认为null
3. 初始化多维数组
3.1 矩形数组
数据类型[,] 数组名 = new 数据类型[行数, 列数] { { 行1元素列表 }, { 行2元素列表 }, ... };

示例:

int[,] matrix = new int[3, 4] {
    { 1, 2, 3, 4 },
    { 5, 6, 7, 8 },
    { 9, 10, 11, 12 }
};
3.2 锯齿数组
数据类型[][] 数组名 = new 数据类型[行数][];
数组名[0] = new 数据类型[行1长度] { 行1元素列表 };
数组名[1] = new 数据类型[行2长度] { 行2元素列表 };
...

示例:

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

总结

  • 声明并初始化数组

    • 使用 new 关键字:数据类型[] 数组名 = new 数据类型[数组长度] { 元素列表 };
    • 省略 new 关键字:数据类型[] 数组名 = { 元素列表 };
  • 声明后初始化数组

    • 使用 new 关键字:数据类型[] 数组名; 数组名 = new 数据类型[数组长度] { 元素列表 };
    • 默认初始化:数据类型[] 数组名 = new 数据类型[数组长度];
  • 初始化多维数组

    • 矩形数组:数据类型[,] 数组名 = new 数据类型[行数, 列数] { { 行1元素列表 }, { 行2元素列表 }, ... };
    • 锯齿数组:数据类型[][] 数组名 = new 数据类型[行数][]; 数组名[0] = new 数据类型[行1长度] { 行1元素列表 };

5.2.3 C# 数组元素的访问

5.2.3 C# 数组元素的访问

在C#中,数组元素的访问是通过索引来实现的。索引是一个整数值,用于指定数组中的特定位置。C#数组的索引从0开始,这意味着第一个元素的索引是0,最后一个元素的索引是数组长度减1。

1. 访问一维数组的元素
1.1 获取数组元素
数据类型 元素 = 数组名[索引];

示例:

int[] numbers = { 1, 2, 3, 4, 5 };
int firstElement = numbers[0]; // 获取第一个元素,值为1
int lastElement = numbers[numbers.Length - 1]; // 获取最后一个元素,值为5
1.2 修改数组元素
数组名[索引] = 新值;

示例:

int[] numbers = { 1, 2, 3, 4, 5 };
numbers[2] = 10; // 将第三个元素修改为10
Console.WriteLine(numbers[2]); // 输出10
2. 访问多维数组的元素
2.1 访问矩形数组的元素
数据类型 元素 = 数组名[行索引, 列索引];

示例:

int[,] matrix = {
    { 1, 2, 3, 4 },
    { 5, 6, 7, 8 },
    { 9, 10, 11, 12 }
};

int element = matrix[1, 2]; // 获取第二行第三列的元素,值为7
Console.WriteLine(element); // 输出7
2.2 修改矩形数组的元素
数组名[行索引, 列索引] = 新值;

示例:

int[,] matrix = {
    { 1, 2, 3, 4 },
    { 5, 6, 7, 8 },
    { 9, 10, 11, 12 }
};

matrix[1, 2] = 20; // 将第二行第三列的元素修改为20
Console.WriteLine(matrix[1, 2]); // 输出20
2.3 访问锯齿数组的元素
数据类型 元素 = 数组名[行索引][列索引];

示例:

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

int element = jaggedArray[1][2]; // 获取第二行第三列的元素,值为6
Console.WriteLine(element); // 输出6
2.4 修改锯齿数组的元素
数组名[行索引][列索引] = 新值;

示例:

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

jaggedArray[1][2] = 20; // 将第二行第三列的元素修改为20
Console.WriteLine(jaggedArray[1][2]); // 输出20
3. 遍历数组
3.1 遍历一维数组

使用 for 循环遍历一维数组:

for (int i = 0; i < 数组名.Length; i++)
{
    数据类型 元素 = 数组名[i];
    // 处理元素
}

示例:

int[] numbers = { 1, 2, 3, 4, 5 };
for (int i = 0; i < numbers.Length; i++)
{
    Console.WriteLine(numbers[i]);
}
3.2 遍历矩形数组

使用嵌套的 for 循环遍历矩形数组:

for (int i = 0; i < 数组名.GetLength(0); i++)
{
    for (int j = 0; j < 数组名.GetLength(1); j++)
    {
        数据类型 元素 = 数组名[i, j];
        // 处理元素
    }
}

示例:

int[,] matrix = {
    { 1, 2, 3, 4 },
    { 5, 6, 7, 8 },
    { 9, 10, 11, 12 }
};

for (int i = 0; i < matrix.GetLength(0); i++)
{
    for (int j = 0; j < matrix.GetLength(1); j++)
    {
        Console.WriteLine(matrix[i, j]);
    }
}
3.3 遍历锯齿数组

使用嵌套的 for 循环遍历锯齿数组:

for (int i = 0; i < 数组名.Length; i++)
{
    for (int j = 0; j < 数组名[i].Length; j++)
    {
        数据类型 元素 = 数组名[i][j];
        // 处理元素
    }
}

示例:

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

for (int i = 0; i < jaggedArray.Length; i++)
{
    for (int j = 0; j < jaggedArray[i].Length; j++)
    {
        Console.WriteLine(jaggedArray[i][j]);
    }
}

总结

  • 访问一维数组的元素:使用 数组名[索引]
  • 访问多维数组的元素
    • 矩形数组:使用 数组名[行索引, 列索引]
    • 锯齿数组:使用 数组名[行索引][列索引]
  • 遍历数组
    • 一维数组:使用 for 循环。
    • 矩形数组:使用嵌套的 for 循环。
    • 锯齿数组:使用嵌套的 for 循环,注意每个子数组的长度可能不同。

标签:5.2,C#,元素,数据类型,int,数组名,数组,new,全解
From: https://blog.csdn.net/Argonaut_/article/details/142491934

相关文章

  • WebRTC中的维纳滤波器实现详解:基于决策导向的SNR估计
    目录1.维纳滤波器的基本原理2.WebRTC中的维纳滤波器实现3.代码逐步剖析4.总结在WebRTC的噪声抑制模块中,维纳滤波器(WienerFilter)是一种非常常见且重要的滤波器,用于提高语音信号的清晰度并抑制背景噪声。本文将详细解释维纳滤波器在WebRTC中的实现逻辑,并结合代码......
  • springcloud中sentient整合openfeign组件
    openfeign作为微服务各个模块之间调用的组件,如果服务提供方出现异常,会将错误返回给服务消费方,消费方可以通过sentinel的服务降级方法,对如果调用异常的情况进行处理以下介绍下具体做法:一、服务消费方必须整合openfeign,方法可以参考:https://www.cnblogs.com/qwg-/p/18007449pom.x......
  • 小米15系列旗舰新品齐获3C认证,10-11月手机大战一触即发
    【9月24日最新资讯】&nbsp;小米15标准版(型号24129PN74C)与小米15Pro(型号2410DPN6CC)接连获得国家质量监督检验检疫总局3C强制性产品认证,预示着这两款备受瞩目的旗舰新机离正式面世又迈进一大步。两者均配备最高90W超级快充技术,彰显了小米在快速充电领域持续领跑的决心。北京昌......
  • pbootcms网站是使用sqlite数据库好还是使用mysql数据库好
    选择在PbootCMS网站上使用SQLite数据库还是MySQL数据库取决于几个因素,包括但不限于网站规模、预期的访问量、并发需求以及维护成本等。以下是两者的对比:SQLite架构:SQLite是一种嵌入式的关系型数据库管理系统,它不需要单独的服务器进程或系统。适用场景:适用于小型应用程序,访问量......
  • Pbootcms数据库转换教程(sqlite转mysql详细教程)
    一、准备工作下载转换所需工具:确保你有SQLiteStudio和phpMyAdmin等工具。备份现有数据:在进行任何操作之前,请确保备份现有的SQLite数据库文件。二、教程1.导出SQLite数据库打开SQLiteStudio:启动SQLiteStudio软件。定位数据库文件:找到PbootCMS的data文件夹下的.db文件。......
  • pbootcms如何将默认的sqlite转换成mysql数据库
    将PbootCMS使用的SQLite数据库转换为MySQL数据库可以通过以下几个步骤实现:准备工作备份当前SQLite数据库:在开始转换前,确保你有一个完整的SQLite数据库备份,以防转换过程中出现任何问题。准备MySQL环境:确保你的服务器上已经安装并配置好了MySQL服务,并且创建了一个新的数据库供Pb......
  • 日新月异 PyTorch - pytorch 基础: K-means 聚类算法(sklearn.cluster 的 KMeans 实现,
    源码https://github.com/webabcd/PytorchDemo作者webabcd日新月异PyTorch-pytorch基础:K-means聚类算法(sklearn.cluster的KMeans实现,对一个包含10个特征的数据做分类)示例如下:basic\demo07.py'''K-means聚类算法(sklearn.cluster的KMeans实现,对一个包含1......
  • pycharm项目中mysqlclent替换使用PyMySQL
    环境:OS:Windows11Python:3.6.5以为mysqlclient一直安装不上,下面使用PyMySQL替换mysqlclient1.安装PyMySQLpipinstallPyMySQL 2.然后在你的Django项目的__init__.py文件中添加以下代码来指定Django使用PyMySQL:importpymysqlpymysql.install_as_MySQLdb() 3.......
  • C++ 大佬 介绍
    1.ScottMeyers:身份:世界知名的C++程序员和作者。贡献:畅销书《EffectiveC++》和《MoreEffectiveC++》的作者,这些书籍被广大C++开发者视为必读经典。ScottMeyers的博客(TheViewfromAristeia)长期更新,内容涵盖C++编程的各个方面,以其深入浅出的分析和实用建议而受到广泛赞誉。......
  • AT_jsc2021_g Spanning Tree 题解
    感觉自己稍微有一点唐了。思路我们首先可以把一定要连的边连起来。这样就变成了一个无向图生成树计数问题。如何求解。使用矩阵树定理!我们可以求出基尔霍夫矩阵,然后跑一遍行列式就可以了。时间复杂度:\(O(n^3)\)。Code#include<bits/stdc++.h>usingnamespacestd;con......