C#编程(三十二)----------数组基础

数组

如果需要使用同一类型的多个对象,就可以使用数组.数组是一种数据结构,他可以包含同一类型的多个元素.

数组的声明

在声明数组时,应先定义数组中元素的类型,其后是一对方括号核一遍变量名.例如:生命一个包含整型元素的数组:

int [] array;

数组的初始化

声明了数组后就必须为数组分配内存,以保存数组的所有元素.数组是引用类型,所以必须给它分配堆上的内存.为此,应使用new运算符,制定数组中元素的类型和数量来初始化数组的变量.下面制定了数组的大小.

array=new int[4];

在声明和初始化完数组后,变量array就引用了4个整型值,它们位于托管堆上:

指定数组的大小后,如果不复制数组中的所有元素,就不能重新设置数组的大小,如果事先不知道数组中应包含多少个元素,就可以使用集合.

声明和初始化的简化操作: int [] array=new int[4];

还可以使用数组初始化器维数组的每个元素赋值.数组初始化器只能在声明数组变量时使用,不能在声明数组之后使用.

int [] array =new int [4] {1,2,3,4};

如果用花括号吃书画数组,则还可以不指定数组的大小,因为编译器会自动识别统计元素的个数:

int [] array =new int []{1,2,3,4};

更简单的办法:

int [] array ={1,2,3,4};

访问数组元素

在声明和初始化数组后,就可以使用索引器访问其中的元素了.数组只支持有整型参数的索引器.

通过所以其传递元素编号,就可以访问数组.索引器总是以0开头.表示第一个元素.可以传递给索引器的最大值是元素的个数减一,因为索引器从0开始.

int [] array=new int[] {1,2,3,4};

int v1=array[0];

int v2=array[1];

array[3]=44;

Console.WriteLine(arrar[4])//这里会出错.

如果使用错误的索引器值(其中不存在对应的元素),就会抛出IndexOutOfRangeException异常.

如果不知道数组中的元素个数,可以在for语句中使用Length属性:

for ( int i=0;i<array.Length;++i)

{

Console.WriteLine(arrray[i])

}

除了使用for语句之外也可以使用foreach语句: foreach(var item in array)

{

Console.WriteLine(item);

}

使用引用类型

除了能声明预定义的数组,还可以声明自定义的数组.

public class Person

{

public string FirstName { get; set; }

public string LastName { get; set; }

public override string ToString()

{

return string.Format("{0},{1}", FirstName, LastName); ;

}

}

生命一个包含两个Person元素的数组与生命一个int数组类似:

Person[] p = new Person[2];

注意:如果数组中的元素是引用类型,就必须为每个数组元素分配内存.若使用了数组中未分配内存的元素,就会抛出NullReferenceException类型的异常.

使用从0开始的索引器,可以为数组的每个元素分配内存.:

p[0] = new Person { FirstName = "hahaha", LastName = "heiheihei" };

p[1] = new Person { FirstName = "hehehe", LastName = "gagaga" };

该图显示了Person数组中的对象在托管堆中的情况.myPerson是存储在栈上的一个变量,该变量引用了存储在托管堆上的Person元素对应的额数组.这个数组有足够容乃两个引用的空间.数组中的每一项都引用了一个Person对象,而这些Person对象也存储在托管堆上.

和int类型一样,也可以对自定义类型使用数组初始化器:

Person [] p=

{

new Person { FirstName = "hehehe", LastName = "gagaga" };

new Person { FirstName = "hahaha", LastName = "heiheihei" };

}

多维数组

一般数组(也称为一位数组)用一个整数来索引.多维数组用两个或多个整数来索引.

在C#中声明二维数组,需要在方括号中加上一个逗号.数组在初始化时应制定每一维的大小(也称为阶).接着,就可以使用两个整数作为索引器来访问数组中的元素:

int[,]array=new int [1,1];

array[0, 0] = 1;

array[0, 1] = 2;

array[1, 0] = 3;

array[1, 1] = 4;

声明数组之后,就不能修改其阶数了.

如果事先知道元素的值,则可以使用数组索引器来初始化二维数组.在初始化数组时,使用一个外层的花括号,每一行用包含在外层花括号中的内层花括号来初始化.

int[,] array = {

{1,2,3},

{4,5,6},

{7,8,9}

};

使用数组初始化器时,必须初始化数组的每个元素,不能泄露任何元素.

在花括号中使用两个逗号,就可以生命一个三维数组:

int[, ,] array ={

{{1,2},{3,4}},

{{5,6},{7,8}},

{{9,10},{11,12}}

};

Console.WriteLine(array[0,1,1]);

Console.ReadKey();

锯齿数组

可以看出,二维数组对应于一个矩形,锯齿数组比较灵活,在锯齿数组中,每一行都可以有不同的大小.

在声明锯齿数组时,要一次放置左右括号.在初始化锯齿数组时,只有第一队方括号中设置该数组包含的行数.定义各行中元素个数的第二个方括号设置为空,因为这类数组的每一行

包含不同的元素个数.之后,为每一行指定行中的元素个数:

int[][] array = new int[3][];

array[0] = new int[2] { 1,2};

array[1] = new int[3] { 1,2,3};

array[2] = new int[4] { 1,2,3,4};

迭代锯齿数组中的所有元素:

for (int row = 0; row < array.Length; row++)

{

for (int element = 0; element < array[row].Length; element++)

{

Console.WriteLine("row: {0}, element: {1} , value: {2}",row,element,array[row][element]);

}

}

运行结果为:

row: 0, element: 0 , value: 1

row: 0, element: 1 , value: 2

row: 1, element: 0 , value: 1

row: 1, element: 1 , value: 2

row: 1, element: 2 , value: 3

row: 2, element: 0 , value: 1

row: 2, element: 1 , value: 2

row: 2, element: 2 , value: 3

row: 2, element: 3 , value: 4

时间: 2024-10-11 12:43:40

C#编程(三十二)----------数组基础的相关文章

[原创]ActionScript3游戏中的图像编程(连载三十二)

2.2.5 投影距离的模拟 Photoshop投影样式面板的下一个属性是距离,它也存在于Flash的投影滤镜选项中.两者初始值一致,经笔者测试,两者在效果实现和数值意义方面基本一致.Flash不需要对默认参数进行更改. 下一项是扩展,乍一看,在Flash中并没有找到对应项.但仔细观察,在Photoshop投影样式的基础选项里,除了alpha以外,就只剩该属性用了百分比. [原创]ActionScript3游戏中的图像编程(连载三十二),布布扣,bubuko.com

第三十二课 二维数组及其定义 【项目1-2】

第三十二课  二维数组及其定义 项目一 [折腾二维数组] 创建一个5行4列的二维整型数组,通过初始化,为数组中的前两列的10个元素赋初值,然后: 通过键盘输入,使后两列的10个元素获得值: 按行序优先输出数组元素: 将所有元素值乘以3后保存在数组中: 按列序优先输出(输出的第一行是数组中的第一列--,其实输出的就是"转置"): 将数组"倒"着输出(即最后一行最后一列的最先输出,第0行第0列的最后输出): 输出数组中的所有偶数: 输出所有行列下标之和为3的倍数的元素值

2018-07-30 第三十二课

第三十二次课 shell编程(二) 目录 十五.shell中的函数 十六.shell中的数组 十七.告警系统需求分析 十八.告警系统主脚本 十九.告警系统配置文件 二十.告警系统监控项目 二十一.告警系统邮件引擎 二十二.运行告警系统 十五.shell中的函数 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可.定义函数必须要放在最前面.定义好的函数相当于是命令. 语法格式 //name属性定义了赋予函数的唯一名称.脚本中定义的每个函数

三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)

摘自 http://blog.csdn.net/liujun13579/article/details/7773945 三十二.Java图形化界面设计--布局管理器之CardLayout(卡片布局) 卡片布局能够让多个组件共享同一个显示空间,共享空间的组件之间的关系就像一叠牌,组件叠在一起,初始时显示该空间中第一个添加的组件,通过CardLayout类提供的方法可以切换该空间中显示的组件. 1.  CardLayout类的常用构造函数及方法 2.  使用CardLayout类提供的方法可以切换显

毛泽东时代是中国历史上最伟大的时代——为纪念伟大领袖毛主席逝世三十二周年而作

http://www.wyzxsx.com/Article/Class22/200810/53093.html 毛泽东时代是中国历史上最伟大的时代--为纪念伟大领袖毛主席逝世三十二周年而作 94岁老红军郑加平 在去毛化,非毛化的鼓噪声中,其中最恶毒的是有人公开叫嚣:"建国以来毛泽东没干过一件好事".说这样话的人,不用分析,可以断言,他是替被推翻的帝国主义,封建主义,官僚资本主义的余孽发出的嚎叫! 怎样评价毛泽东,稍有理智的人都知道,应把毛泽东放在人类思想大师的高层次中加以研究,从这一观

javaweb学习总结(三十二)——JDBC学习入门【转】

原文地址:javaweb学习总结(三十二)——JDBC学习入门 一.JDBC相关概念介绍 1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后 才能够使用声卡和网卡,同样道理,我们安装好数据库之后,我们的应用程序也是不能直接使用数据库的,必须要通过相应的数据库驱动程序,通过驱动程序去和数 据库打交道,如下所示: 1.2.JDBC介绍 SUN公司为了简化.统一对数据库的操作,定义了一套Java操作

Java进阶(三十二) HttpClient使用详解

Java进阶(三十二) HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性.因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会更加深入. 一.简介 HttpClient是A

Windows界面编程第十二篇 位图显示特效 飞入效果与伸展效果

分享一下我老师大神的人工智能教程吧.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net 转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8696726 欢迎关注微博:http://weibo.com/MoreWindows Windows界面编程之位图显示特效系列目录: 1. <Windows界面编程第九篇位图显示特效交错效果> http:/

第三十二章

道恒无名,朴虽小,而天下弗敢臣.侯王若能守之,万物将自宾.天地相合,以俞甘露,民莫之令而自均焉.始制有名,名亦既有,夫亦将知止,知止所以不殆.譬道之在天下也,犹小谷之与江海也. 第三十二章1 如何让大家都来顺服你? 各位朋友大家好,今天我们接着来聊<道德经>.今天我们不唱歌了,昨天放了一首我唱的歌,这唱歌在我这儿就是一个养生运动.因为唱歌的时候你要调呼吸,这时候是锻炼肺.我之前写过两篇文章,专门讲唱歌的,我们家有一位邻居.一位朋友,这肺间质性病变,很严重的肺病,结果人家天天唱歌,现在恢复的特别

工作那些事(三十二)由孙悟空的两个故事谈个人与团队

故事一: 话说唐太宗为了节省开支,西天取经项目需要裁员,接到通知的唐僧骤然头大,不知如何是好. 有人说: 先把猴子开了,因为不服从管理,再把沙僧开了,因为没有主见,再把猪开了, 因为猪肉比较贵,直接杀了卖钱,再把自已开了,因为没本事去,小白龙留下,因为有后台. 但是: 猴子是不能开的,猴子是团队中的精英,也就是大牛. 小白龙是不能开的,他是唐僧的座驾,是他身份的象征. 猪也是不能开的,对团队的氛围有重要作用. 最后 只能开掉沙僧 虽然他做事很多. 重要的是四种人: 1 唐僧:钦定的项目经理,虽然