C#进阶教程(三)

原创 2007年09月28日 16:14:00
 今天我要向大家讲的是C#的数组(Arrays).C#中的数组和其它一些优秀的语言一样,也是从0开始计的,这从我们以前的例子里可以看出来,也就是说,一个数组的第一个元素是a[0],而不是像VB的a(1).虽然是这样,但是你还是要注意一些区别.
  在声明一个数组的时候,方括号必须跟在类型后面,而不能跟在变量名后面,如:
  int[] table; //不能写成int table[]
  这一点显然与JAVA是不同的,在JAVA中这样是可以的.
  还有就是在C#中你可以不指定数组的大小,这与C语言是不一样的.这使得你可以指定任意长度的数组,如下:
  int[] numbers; // 它的长度是任意的
  当然,你也可以指定它的大小:
  int[10] numbers;//指定了一个长度为10的数组.
  在C#中,支持的数组包括:单维数组,多维数组和多重数组.它们的声明方法如下:
  单维数组: int[] numbers;
  多维数组: string[,] names;
  多重数组: byte[][] scores;
  声明一个数组并不代表已经建立了它.在C#中,所有的数组元素都是对象(倒!怎么跟JAVA说得一样&*%$#@),所以在建立它之前,首先要将它实例化:
  单维数组: int[] numbers = new int[5];
  多维数组: string[,] names = new string[5,4];
  多重数组: byte[][] scores = new byte[5][];
  for (int x = 0; x < scores.Length; x++)  {
    scores[x] = new byte[4];
  }
  呵呵,这有点奇怪吧,先不用理它,以后再说.
  我们同样可以建立更大的数组,比如一个三维数组:
   int[,,] buttons = new int[4,5,3];
  我们甚至可以混合多维数组和多重数组,下面的例子说明了这些:
  int[][,,][,] numbers;
下面的例子展示了以上所有构建数组的方法:
000: // Arrays/arrays.cs
001: using System;
002: class DeclareArraysSample
003: {
004: public static void Main()
005: {
006: // Single-dimensional array
007: int[] numbers = new int[5];
008:
009: // Multidimensional array
010: string[,] names = new string[5,4];
011:
012: // Array-of-arrays (jagged array)
013: byte[][] scores = new byte[5][];
014:
015: // Create the jagged array
016: for (int i = 0; i < scores.Length; i++)
017: {
018: scores[i] = new byte[i+3];
019: }
020:
021: // Print length of each row
022: for (int i = 0; i < scores.Length; i++)
023: {
024: Console.WriteLine("Length of row {0} is {1}", i, scores[i].Length);
025: }
026: }
027: }
它的输出是:
Length of row 0 is 3
Length of row 1 is 4
Length of row 2 is 5
Length of row 3 is 6
Length of row 4 is 7
  在C#中数组的初始化可以在建立时就初始化,和JAVA和C一样,用的是{}.当然,很明显,你的初始化值必须与你声明的数组类型一样,比如你定义了一个int类型的,你就不能给它一个String,唉,JAVA看多了,在C#中,String应写为string,要不然,又要出错了.SUNWEN可能在后面的课程中出现这样的错误,还望大家指正.呵呵!
  下面的例子说明了数组的初始化:
int[] numbers = new int[5] {1, 2, 3, 4, 5};
string[] names = new string[3] {"Matt", "Joanne", "Robert"};

  你也可以省略数组的大小,如:
int[] numbers = new int[] {1, 2, 3, 4, 5};
string[] names = new string[] {"Matt", "Joanne", "Robert"};
  你甚至可以省略new语名,如果你给了值:


int[] numbers = {1, 2, 3, 4, 5};
string[] names = {"Matt", "Joanne", "Robert"};


  在C#中,数组的访问和C/C++/JAVA是一样的,下面的语句建立了一个数组,并将它的第五个元素赋值为5:
int[] numbers = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
numbers[4] = 5;
  如果你没有C/JAVA/C++的编程经验,那么SUNWEN在此提醒,numbers[4]表示的是这个数组的第五个元素,因为我在前面已经说过了,数组是从0开始计的,所以0,1,2,3,4正好是第五个,所以....(台下:笨蛋,你以为我们不知道呀,快继续说!)


  下面的例子是关于多维数组的:
int[,] numbers = { {1, 2}, {3, 4}, {5, 6}, {7, 8}, {9, 10} };
numbers[1, 1] = 5;
  再次注意,C#中的所有数组都是对象(faint,D版),所以,你可以用访问对象的方法,来访问数组.而System.Array就是数组的抽象.你可以参看文档来看Array类支持的方法.举个例子来说吧,你可以用length属性来访问数组的长度.如下例:
int[] numbers = {1, 2, 3, 4, 5};
int LengthOfNumbers = numbers.Length;

 

相关文章推荐

C#基础教程-委托进阶,将方法绑定到委托

将方法绑定到委托   看到这里,是不是有那么点如梦初醒的感觉?于是,你是不是在想:在上面的例子中,我不一定要直接在GreetPeople()方法中给 name参数赋值,我可以像这样使用变量: ...
  • neso520
  • neso520
  • 2011年08月05日 14:54
  • 389

C#进阶WPF基础三 WPF数据绑定、数据库基础

一、数据绑定 好处:便于后台数据库数据的存取 步骤: 1、定义一个类,写一些对应的属性,要跟UI中需要显示数据的控件全部一一对应 class Person { public ...
  • tufeiax
  • tufeiax
  • 2015年06月06日 12:38
  • 1093

Android高手进阶教程(三)之----Android 中自定义View的应用.

大家好我们今天的教程是在Android教程中自定义View的学习,对于初学着来说,他们习惯了Android传统的页面布局方式,如下代码:   view plain "1.0" e...

ReportStudio进阶教程(二十九) - 地图开发(三)追溯报表

通过前面2次的学习,咱们已经可以将数据库中的区域信息和Cognos地图中的信息进行匹配(词典),并且可以展示基本的数据了 这回,我们来实现下在地图中,通过单击地图中的区域,跳转到该区域的明细中去 1....

openGL ES进阶教程(三)用openGL实现动态壁纸,就是这么简单

网上动态壁纸的实现教程有很多,但是用openGL实现动态壁纸的教程却是寥寥无几,那么今天就带领大家学习用openGL实现动态壁纸,起一个抛砖引玉吧。在之前曾写过一篇 ffmpeg/camera实现最近...

Python Django进阶教程(三)(模型的高级用法)

Django版本:1.11 操作系统:Windows Python:3.5数据模型高级使用。这节主要讲模型的使用。回顾一下基础教程的模型设计 新建了三个表,分别Publisher,A...

NAS群晖DSM 进阶教程 篇三:DSM 4458 升级 DSM 4493 update7

 NAS群晖DSM 进阶教程 篇三:DSM 4458 升级 DSM 4493 update7 2014-10-23 11:10 分类:NAS存储 大家好,上次经验写了DSM 4458的傻瓜...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#进阶教程(三)
举报原因:
原因补充:

(最多只允许输入30个字)