数组[整理]

本文详细介绍了 C# 中数组的概念及使用方法,包括一维数组、多维数组和交错数组的声明、初始化与访问方式,并提供了丰富的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

None.gif  数组是一种包含若干变量的数据结构,这些变量都可以通过计算索引进行访问。数组中的数组的元素具有相同的类型。 
None.gif    数组有一个“秩”。数组的秩又称为数组的维度。“秩”为 
1 的数组称为一维数组。“秩”大于 1 的数组称为多维数组。维度大小确定的多维数组通常称为两维数组、三维数组等。
None.gif
None.gif声明数组
None.gif    声明数组时,方括号 ([]) 必须跟在类型后面,而不是标识符后面。在 C# 中,将方括号放在标识符后是不合法的语法。
None.gif
None.gifC# 支持一维数组、多维数组(矩形数组)和数组的数组(交错的数组)。
None.gif
None.gif一维数组:
None.gif
None.gif
int[] arrayname;
None.gif
None.gif多维数组:
None.gif
None.gif
int[,] arrayname;
None.gif
None.gif数组的数组(交错的):
None.gif
None.gif
int[][] arrayname ;
None.gif
None.gif    声明数组并不实际创建它们。在 C# 中,数组是对象,必须进行实例化。
None.gif
None.gif
None.gif示例:
None.gif
using System;
None.gif
None.gif
class TestArray
None.gif
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif
InBlock.gif       
public static void Main()
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif       
dot.gif{
InBlock.gif
InBlock.gif              
//声明一个整型一维数组的引用,变且在堆中分配连续5个整型变量的空间。
InBlock.gif

InBlock.gif              
int[] numbers = new int[5];
InBlock.gif
InBlock.gif              
// 声明一个二维字符串数组的引用
InBlock.gif

InBlock.gif              
string[,] names = new string[5,4];
InBlock.gif
InBlock.gif              
// 数组的数组,相当声明了包含5个byte型一维数组的引用变量的一维数组长度为5
InBlock.gif

InBlock.gif              
byte[][] scores = new byte[5][];
InBlock.gif
InBlock.gif              
//为每个btye型一维数组实例化
InBlock.gif

InBlock.gif              
for (int i = 0; i < scores.Length; i++)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif              
dot.gif{
InBlock.gif
InBlock.gif                     scores[i] 
= new byte[i+3]; //非矩形的
InBlock.gif

ExpandedSubBlockEnd.gif              }

InBlock.gif
InBlock.gif              
for (int i = 0; i < scores.Length; i++)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif              
dot.gif{
InBlock.gif
InBlock.gif                     Console.WriteLine(
"Length of row {0} is {1}", i, scores[i].Length);
InBlock.gif
ExpandedSubBlockEnd.gif              }

InBlock.gif
ExpandedSubBlockEnd.gif       }

InBlock.gif
ExpandedBlockEnd.gif}

None.gif
None.gif初始化数组
ExpandedBlockStart.gifContractedBlock.gifC# 通过将初始值括在大括号 (
dot.gif{}) 内为在声明时初始化数组提供了简单而直接了当的方法。下面的示例展示初始化不同类型的数组的各种方法。
None.gif
None.gif一维数组
ExpandedBlockStart.gifContractedBlock.gif
int[] numbers = new int[5dot.gif{12345};
ExpandedBlockStart.gifContractedBlock.gif
string[] names = new string[3dot.gif{"Matt""Joanne""Robert"};
None.gif可省略数组的大小,如下所示:
None.gif
ExpandedBlockStart.gifContractedBlock.gif
int[] numbers = new int[] dot.gif{12345};
ExpandedBlockStart.gifContractedBlock.gif
string[] names = new string[] dot.gif{"Matt""Joanne""Robert"};
None.gif如果提供了初始值设定项,则还可以省略 
new 运算符,如下所示:
None.gif
ExpandedBlockStart.gifContractedBlock.gif
int[] numbers = dot.gif{12345};
ExpandedBlockStart.gifContractedBlock.gif
string[] names = dot.gif{"Matt""Joanne""Robert"};
None.gif多维数组
ExpandedBlockStart.gifContractedBlock.gif
int[,] numbers = new int[32dot.gifdot.gif{12}dot.gif{34}dot.gif{56} };
ExpandedBlockStart.gifContractedBlock.gif
string[,] siblings = new string[22dot.gifdot.gif{"Mike","Amy"}dot.gif{"Mary","Albert"} };
None.gif可省略数组的大小,如下所示:
None.gif
ExpandedBlockStart.gifContractedBlock.gif
int[,] numbers = new int[,] dot.gifdot.gif{12}dot.gif{34}dot.gif{56} };
ExpandedBlockStart.gifContractedBlock.gif
string[,] siblings = new string[,] dot.gifdot.gif{"Mike","Amy"}dot.gif{"Mary","Albert"} };
None.gif如果提供了初始值设定项,则还可以省略 
new 运算符,如下所示:
None.gif
ExpandedBlockStart.gifContractedBlock.gif
int[,] numbers = dot.gifdot.gif{12}dot.gif{34}dot.gif{56} };
ExpandedBlockStart.gifContractedBlock.gif
string[,] siblings = dot.gifdot.gif{"Mike""Amy"}dot.gif{"Mary""Albert"} };
None.gif交错的数组(数组的数组)
None.gif可以像下例所示那样初始化交错的数组:
None.gif
ExpandedBlockStart.gifContractedBlock.gif
int[][] numbers = new int[2][] dot.gifnew int[] dot.gif{2,3,4}new int[] dot.gif{5,6,7,8,9} };
None.gif可省略第一个数组的大小,如下所示:
None.gif
ExpandedBlockStart.gifContractedBlock.gif
int[][] numbers = new int[][] dot.gifnew int[] dot.gif{2,3,4}new int[] dot.gif{5,6,7,8,9} };
None.gif-或-
None.gif
ExpandedBlockStart.gifContractedBlock.gif
int[][] numbers = dot.gifnew int[] dot.gif{2,3,4}new int[] dot.gif{5,6,7,8,9} };
None.gif访问数组成员
None.gif访问数组成员可以直接进行,类似于在 C
/C++ 中访问数组成员。例如,下面的代码创建一个名为 numbers 的数组,然后向该数组的第五个元素赋以 5
None.gif
ExpandedBlockStart.gifContractedBlock.gif
int[] numbers = dot.gif{109876543210};
None.gifnumbers[
4= 5;
None.gif下面的代码声明一个多维数组,并向位于 [
11] 的成员赋以 5
None.gif
ExpandedBlockStart.gifContractedBlock.gif
int[,] numbers = dot.gifdot.gif{12}dot.gif{34}dot.gif{56}dot.gif{78}dot.gif{910} };
None.gifnumbers[
11= 5;
None.gif下面声明一个一维交错数组,它包含两个元素。第一个元素是两个整数的数组,第二个元素是三个整数的数组:
None.gif
ExpandedBlockStart.gifContractedBlock.gif
int[][] numbers = new int[][] dot.gifnew int[] dot.gif{12}new int[] dot.gif{345}
ExpandedBlockEnd.gif}
;
None.gif下面的语句向第一个数组的第一个元素赋以 
58,向第二个数组的第二个元素赋以 667
None.gif
None.gifnumbers[
0][0= 58;
None.gifnumbers[
1][1= 667;
None.gif对数组使用 
foreach
None.gifC# 还提供 
foreach 语句。该语句提供一种简单、明了的方法来循环访问数组的元素。例如,下面的代码创建一个名为 numbers 的数组,并用 foreach 语句循环访问该数组:
None.gif
ExpandedBlockStart.gifContractedBlock.gif
int[] numbers = dot.gif{456123-2-10};
None.gif
foreach (int i in numbers)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif   System.Console.WriteLine(i);
ExpandedBlockEnd.gif}

None.gif由于有了多维数组,可以使用相同方法来循环访问元素,例如:
None.gif
ExpandedBlockStart.gifContractedBlock.gif
int[,] numbers = new int[32dot.gif{dot.gif{999}dot.gif{333}dot.gif{555}};
None.gif
foreach(int i in numbers)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif   Console.Write(
"{0} ", i);
ExpandedBlockEnd.gif}

None.gif该示例的输出为:
None.gif
None.gif
9 99 3 33 5 55 
None.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值