数组[整理]

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 [ 5 dot.gif {12345} ;
ExpandedBlockStart.gifContractedBlock.gif
string [] names  =   new   string [ 3 dot.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 [ 3 2 dot.gif dot.gif{12}dot.gif{34}dot.gif{56} } ;
ExpandedBlockStart.gifContractedBlock.gif
string [,] siblings  =   new   string [ 2 2 dot.gif dot.gif{"Mike","Amy"}dot.gif{"Mary","Albert"} } ;
None.gif可省略数组的大小,如下所示:
None.gif
ExpandedBlockStart.gifContractedBlock.gif
int [,] numbers  =   new   int [,]  dot.gif dot.gif{12}dot.gif{34}dot.gif{56} } ;
ExpandedBlockStart.gifContractedBlock.gif
string [,] siblings  =   new   string [,]  dot.gif dot.gif{"Mike","Amy"}dot.gif{"Mary","Albert"} } ;
None.gif如果提供了初始值设定项,则还可以省略 
new  运算符,如下所示:
None.gif
ExpandedBlockStart.gifContractedBlock.gif
int [,] numbers  =   dot.gif dot.gif{12}dot.gif{34}dot.gif{56} } ;
ExpandedBlockStart.gifContractedBlock.gif
string [,] siblings  =   dot.gif dot.gif{"Mike""Amy"}dot.gif{"Mary""Albert"} } ;
None.gif交错的数组(数组的数组)
None.gif可以像下例所示那样初始化交错的数组:
None.gif
ExpandedBlockStart.gifContractedBlock.gif
int [][] numbers  =   new   int [ 2 ][]  dot.gif new 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.gif new 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.gif new 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下面的代码声明一个多维数组,并向位于 [
1 1 ] 的成员赋以  5
None.gif
ExpandedBlockStart.gifContractedBlock.gif
int [,] numbers  =   dot.gif dot.gif{12}dot.gif{34}dot.gif{56}dot.gif{78}dot.gif{910} } ;
None.gifnumbers[
1 1 =   5 ;
None.gif下面声明一个一维交错数组,它包含两个元素。第一个元素是两个整数的数组,第二个元素是三个整数的数组:
None.gif
ExpandedBlockStart.gifContractedBlock.gif
int [][] numbers  =   new   int [][]  dot.gif new 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 [ 3 2 dot.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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值