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#进阶教程(一)

在表面上,C#和JAVA非常地像,以致一个懂JAVA的人能够很快的掌握C#的结构.致于其内部的实现机理,那我也不太清楚,只能与大家在学习中共同进步了,还希望大家多多捧场呀!  好,为了给大家一个更清晰...
  • jroc123
  • jroc123
  • 2007年09月28日 16:11
  • 415

PHP高级知识进阶

《PHP高级知识进阶》系列技术文章整理收藏   1session机制详解以及session的相关应用 http://www.lai18.com/content/409168.html ...
  • fanblog
  • fanblog
  • 2016年09月27日 20:57
  • 1548

【C++进阶】深入理解C/C++(2)

【Deep C (and C++)】深入理解C/C++(2)  好,接着深入理解C/C++之旅。我在翻译第一篇的时候,自己是学到不不少东西,因此打算将这整个ppt翻译完毕。 ...
  • fu_zk
  • fu_zk
  • 2014年02月19日 15:19
  • 877

C/C++ 进阶 —— static

static 让函数有了“时态”所谓时态即是有状态的,而非无状态的,函数的状态会随着函数被调用次数的增加而发生变化。函数内部的 static 型变量只初始化一次,只在第一次被调用时进行初始化,后续调用...
  • lanchunhui
  • lanchunhui
  • 2016年04月17日 23:07
  • 244

C++高级进阶 第一季:const 详解

零、文章来由打算将基础知识在看书的同时系统的整理一下,方便大家也方便自己。整理的知识尽量参照书本知识,比网上获取的资料有更高的可信度。一、从 文字常量和常变量 开始补充:const并没有想象中的那么简...
  • Scythe666
  • Scythe666
  • 2016年03月05日 10:11
  • 1471

程序员进阶之路:如何从零开始成为技术大神

知乎上有人问,成为顶尖的程序员是否需要学会武术,获赞最多的评论是一定要会武术,而有必要在公司年会上表演出来。 什么单手开砖,空手道,双截棍等均可,因为这样的话产品在提需求的时候一定会非常小心谨慎,也保...
  • u011606348
  • u011606348
  • 2015年07月17日 11:49
  • 2603

进阶,开始了.

      研一下学期已经过去三分之一了,这学期的课程比较少,研究的方向已经确定了,先要学一些基础知识,为以后的研究生活做准备.    我主要做关于流媒体方向的,做无线网络的仿真,现在正在学习c++,...
  • keytons2
  • keytons2
  • 2009年03月23日 22:45
  • 143

编程实践:Visual C++进阶100例

  • 2010年07月18日 02:15
  • 7.4MB
  • 下载

c#如何进阶?

1.关于源码,电脑格式化了很多次,源码基本没了。其实前几个小软件核心代码很少的,也没用到多少算法和数据结构,我个人数据结构和算法一直很菜,基本不用复杂的= = …就是调用了一下C# 的一些API,访问...
  • Janet_1994
  • Janet_1994
  • 2017年02月22日 21:42
  • 322

Java进阶教程(一)关键字

Java进阶教程(一)关键字 synchronized:当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 instanceof:在运行时指出对象是否是特定类的...
  • CanvaChen
  • CanvaChen
  • 2017年04月09日 13:56
  • 1082
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#进阶教程(三)
举报原因:
原因补充:

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