目录
【概述及数组的定义】
1.概述
2.数组的定义
2.1 一维数组
2.2 多维数组
2.3不规则数组
3.数组创建实例
数组是具有相同的数据类型且按一定次序排列的一组变量的集合体,构成一个数组的这些变量称为数组元素,数组有一个统一的名字叫数组名。
在数组与集合的专题内容中,我们首先学习数组的创建和访问,然后在此基础上,学习数组的一些复杂的操作,主要包括存储、查找和排序技术。
一个数组的每一维都有相应的长度,这个长度是一个大于或等于零的整数。维的长度不是数组类型的一部分,但是更适于当一个数组类型的实例在运行时被创建时建立。
一个数组中元素的全部数量是数组中每一维的长度的乘积。如果数组中一个或者多个维的长度为零,这个数组就被称为是空的。数组中元素的类型可以是任何类型,包括数组类型。
C# 数组从零开始建立索引,即数组索引从零开始。C#中数组的工作方式与在大多数其他流行语言中的工作方式类似。但还有一些差异应引起注意。
声明数组时,方括号 ([]) 必须跟在类型后面,而不是标识符后面。在 C#中,将方括号放在标识符后是不合法的语法。
int[] table; // not int table[]
数组的大小不是其类型的一部分,而在 C 语言中它却是数组类型的一部分。这使我们可以声明一个数组并向它分配 int 对象的任意数组,而不管数组长度如何。例如:
int[] numbers; //定义一个任意长度的整型数组numbers
numbers = new int[10]; // numbers数组长度为10
numbers = new int[20]; //现在numbers数组长度变成了20
C# 支持一维数组、多维数组(矩形数组)和不规则数组。例如:
一维数组:
int[] numbers;
多维数组:
string[,] names;
不规则数组:
byte[][] scores;
(1) 一维数组声明语法形式
type[ ] arrayName;其中:type——可以是C#中任意的数据类型; [ ]——表明后面的变量是一个数组类型,必须放在数组名之前;arrayName——数组名,遵循标识符的命名规则
例如:
int [ ]a1; // a1是一个含有int类型数据的数组
double [ ]f1; // f1是一个含有double类型数据的数组
string [ ]s1; // s1是一个含有string类型数据的数组
(2) 创建数组对象
用new运算符创建数组实例,有两种基本形式。声明数组和创建数组分别进行:
type [ ]arrayName ; // 数组声明
arrayName = new type[size]; // 创建数组实例
其中:size——表明数组元素的个数;声明数组和创建数组实例也可以合在一起写:
type [ ]arrayName = new type[size] ;
例如:
int [ ] a1;
a1 = new int [10]; // a1是有10个int类型元素的数组
string [ ]s1 = new string[5]; //s1是含有5个string类型元素的数组
(1) 多维数组声明语法形式
type [ , , , ]arrayName;
多维数组就是指能用多个下标访问的数组。在声明时方括号内加逗号,就表明是多维数组,有n个逗号,就是n+1维数组。
例如:
int [ , ] score; // score是一个int类型的二维数组
float [ , , ] table; // table是一个float类型的三维数组
(2) 创建数组对象
声明数组和创建数组分别进行:
type [ , ,]arrayName; // 数组声明
// 创建数组实例
arrayName = new type[size1, size2, size3];
其中:size1, size2, size3——分别表明多维数组每一维的元素个数;声明数组和创建数组实例也可以合在一起写:
type [, , ]arrayName = new type[size1,size2,size3];
例如:
int [, ] score ;
score = new int [3, 4]; //score是一个3行4列的二维数组
float [ , , ] table=new float [2, 3, 4]; //table是一三维数组,每维分别是2、3、4
一维数组和多维数组都属于矩形数组,而C#所特有的不规则数组是数组的数组,它的内部每个数组的长度可以不同,就像一个锯齿形状。
不规则数组声明:
type[ ][ ][ ] arrayName;
方括号[ ]的个数与数组的维数相关。例如:
int[ ][ ] jagged; //jagged是一个int类型的二维不规则数组
【实例1】显示0~n的值,创建一个一维数组,其元素个数由变量n确定,用for循环给数组的每个元素赋值,其元素的值分别为0,1,2,…,n,并将其输出到消息框中,每行5个元素。变量n的值从文本框中输入。在Visual Studio中插入相应控件及事件(有关控件后面内容会具体详细说)并输入如下代码:
private void button1_Click(object sender,System.EventArgs e)
{
int n=Int32.Parse(textBox1.Text);
string output=””;
int [] number=new int[n];
for(int i=0;i=0;i--,j++)
{
if(j%5==0)
output+=number[i]+”\n”;
else
output+= number[i]+”\t”
}
MessageBox.Show(string.Fromat(output));
}
【代码分析与讨论】
int[] number=new int [n]声明并创建数组number,元素个数为n,在此n为变量,但使用之前必须被赋值。若声明并创建数组时有初始值设定项,则n不能是变量,必须是常数,若n为变量会发生编译错误:“应输入常数值”如:
int n=Int32.Parse(textBox1.Text);
int[] number=new int[n] {1,2,3,4,5,6};
是错误的。而:
int n=Int32.Parse(textBox1.Text);
int[] number=new int[n] ;
则是正确的。
数组的Length属性保存数组中当前包含的元素总数。因此可以通过for循环向数组的每一个元素赋值:
for(int i=0;i
其中“number[i]=i;”语句的作用是将i的值赋给元素number[i]。
以下for循环将数组中每个元素按照索引从大到小的顺序存入字符串output中,每隔5个元素插入一换行符。每行元素与元素之间相距Tab键空隔。
for(int i=number.Length-1,j=1;i>=0;i--,j++)
{
if(j%5==0)
output+=number[i]+”\n”;
else
output+= number[i]+”\t”
}