c# 数组详解

数组即是一组相同类型组合在一起,使用一个通用的名称,通过分配的下标访问的数据集合中的元素。

数组是具有相同类型的一组数据。当访问数组中的数据时,可以通过下标来指明。c#中数组元素可以为任何数据类型,数组下标从0开始,即第一个元素对应的下标为0,以后逐个递增。数组可以一维也可多维。

一维数组是最基本的数组类型,其声明方法如下:
数据类型 [ ] 数组名 ;
举例:
int [ ] anArray ; // 声明一个整型的一维数组

具有两个维度的数组是二维数组,其声明方法如下:
数据类型 [ , ] 数组名 ;
举例:
int [ , ] anArray ; // 声明一个整型的二维数组
float [ , ]anArrayOfFloats; // 声明一个浮点型的二维数组
string [ , ] anArrayOfStrings; // 声明一个字符串型的二维数组

声明数组变量时,还没有创建数组,还没有为数组中元素分配任何内存空间,因此,声明数组后,需要对数组实例化:
anArray = new int [2,4] ;
anArrayOfStrings = new stirng [2,4] ;

我们也可以用给定的值对数组元素进行初始化。
int [, ] anArray = new int [2, 4] {{1,2,3,4},{5,6,7,8}};
string [, ] anArrayOfStrings = new string [2, 2] {{"某甲","某乙"}, {"冠军" ,"亚军" }};
也可使用下列快捷方式:
int [, ] anArray = {{0,1,2,3},{1,2,3,4}};
string [, ] anArrayOfStrings = {{"某甲","某乙"}, {"冠军" ,"亚军" }};

在C#语言中,数组为我们提供了一些有用的特性,利用这些特性,我们可以完成一些更高级的功能。
数组名.Length :返回一个整数,该整数表示该数组的所有维数中元素的总数。
数组名.Rank :返回一个整数,该整数表示该数组的维数。
数组名.GetLength(int dimension) :返回一个整数,该整数表示该数组的指定维(由参数dimension指定,维度从零开始)中的元素个数。

4.foreach语句针对数组或集合中的每一个元素,循环运行嵌入语句。
foreach语句的语法格式为:
foreach (数据类型 标识符 in 表达式)
嵌入语句


//包含6个元素的一维整数数组; 
int[] mf1=new int[6]; //注意初始化数组的范围,或者指定初值;

//包含6个元素的一维整数数组,初值1,2,3,4,5,6 
int[] mf2=new int[6]{1,2,3,4,5,6};
 
//一维字符串数组,如果提供了初始值设定项,则还可以省略 new 运算符 
string[] mf3={"c","c++","c#"};

//一维对象数组 
Object[] mf4 = new Object[5] { 26, 27, 28, 29, 30 };
 
//二维整数数组,初值mf5[0,0]=1,mf5[0,1]=2,mf5[1,0]=3,mf5[1,1]=4 
int[,] mf5=new int[,]{{1,2},{3,4}};
 
//6*6的二维整型数组 
int[,] mf6=new mf[6,6];

下面来看一个一维字符串数组的遍历 
using System; 
public class MikeCat 

static void PrintArray(string[] arr) 

//打印数组元素,arr.Length 表示数组元素的个数 
for(int i=0;i<arr.Length;i++) 

Console.WriteLine("arr[{0}]={1}",i,arr[i]); 


public static void Main() 

string[] arr={"c","c++","c#"}; 
//将数组作为一个参数传递 
PrintArray(arr); 


程序结果:arr[0]=c arr[1]=c++ arr[2]=c#

下面来看一个4行2列(4*2)的整型数组的遍历: 
using System; 
public class MikeCat 

static void PrintArray(int[,] arr) 

//通过两次FOR循环遍历二维数组 
for(int i=0;i<4;i++)//初始化i作为循环变量,i++实现该变量的自增运算。 
//for循环满足条件后执行完循环体一次后执行i++,然后进入下次循环。简单的c语法,这里做简单介绍供初学者学习。(详细可参阅《c# 高级编程4.0》一书) 

for(int j=0;j<2;j++) 

Console.WriteLine("arr[{0},{1}]={2}",i,j,arr[i,j]);//打印每个二维数组元素 



public static void Main() 

//主函数 
//将数组作为一个参数传递 
PrintArray(new int[,]{{1,2},{3,4},{5,6},{7,8}}; 

}


运行结果:arr[0,0]=1 arr[0,1]=2 arr[1,0]=3 arr[1,1]=4 arr[2,0]=5 arr[2,1]=6 arr[3,0]=7 arr[3,1]=8

一,C# array数组的用法范例: 
type[]   typename=new type[size]; 

如int[] a=new int[2];string[] str=new string[5];

实事上我们平常是用int[],string[]...的,此时我们已经创建一个Array数组,只不过我们平常没有这种意识而已.

(1):type数据类型不能缺;且要统一,而不能是如 int[] a=new Array[];

(2):数组的大小size不能缺,否则c#认为是出错的,因为数组是一段固定长度的内存;

(3):右边是一个中括号[],而不是()

实例:

            //Array ar = new Array();//错误,无法创建抽象类或接口“System.Array”的实例             //int[] array = new Array[3];错误,             //int[] array = new Array[];错误,必须指定数组的大小或初始值             //int[] array = new Array[3];//错误,无法转换为int[]             //int[] array=new int[];//错误,必须指定数组的大小或初始值             //平常我们int[],string[]...事实上就是声明一个array数组了

            int[] array = new int[5];             //或int[] arr={1,2,3};             for (int i = 0; i < 5; i++)             {                 array[i] = i*100;//注:array数组并不提供add,clear,addRange..方法,而是直接设置或获取值                 Response.Write(array[i] + "<br>");             }             Response.Write(array.Length + "<br><br>");

int [] intarray=new int[9];      intarray[0]=10;      intarray[1]=20;      intarray[2]=30;      intarray[3]=40;      intarray[4]=50;      intarray[5]=60;      intarray[6]=70;      intarray[7]=80;      intarray[8]=90;

二,C# ArrayList数组的用法范例:

ArrayList al = new ArrayList();             for (int i = 0; i < 3; i++)             {                 al.Add(i);                 Response.Write(al[i].ToString() + "<br>");//输出数组中的元素值                 // Response.Write(al[i]+ "<br>");             }             Response.Write(al.Count + "<br><br>");

            foreach (int obj in al)//或foreach (object obj in al),因为al是一个object类型的数组             {                 Response.Write(obj+"-OK"+"<br>");             }

三,ArrayList和Array相互之间的转化

         (1)以下是把ArrayList数组中的值拷贝到Array中去的实例用法

          //int[] IResult=new int[al.Count];             //al.CopyTo(IResult);             //或是用下面的方法           int[] IResult = (int[])al.ToArray(typeof(Int32));//ToArray(Int32);这样错误,一定要强制类型转换           //Person[] personArrayFromList = (Person[])personList.ToArray(typeof(Person)); 

         foreach(int item   in IResult)             {               Response.Write(item.ToString());             }

Response.Write("以下是把Array数组中的值拷贝到ArrayList中去的实例用法" + "<br>" + "结果为:<br>");

            int[] a ={ 222, 333, 555 };             ArrayList arrList = new ArrayList();             foreach (object obj in a)//或foreach (int obj in a)             {                 arrList.Add(obj);                 Response.Write(obj+"<br>");             }


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值