C#学习笔记(二)

第2讲数组
  在学习前,视频教学中会提到一些开发辅助的软件,由于我已经安装了Visual Studio环境,所以也不需要了,如果大家已经安装了Visual Studio环境,那么直接用开发环境的控制台程序调试编译运行就可以了。如果大家没有的话,也可以和前一课讲的方式去调试运行,都是可以的。我还是运用原来前一课的方法来编译运行代码,编写代码大家可以在Visual Studio环境编写,是很方便的。
  好,今天我们来讲一下数组。在程序开发中,经常会使用到数组,特别是数学运算之中,它的应用更加广泛。下面用一个简单的例子来说明数组。我们来看一下一个简单的数组运用,代码如下:
  1. //引入一个命名空间
  2. using System;

  3. //声明一个Test类
  4. class Test
  5. {
  6.     //声明一个入口函数
  7.     static void Main()
  8.     { 
  9.         //声明一个整形的数组,名称叫arr
  10.         //数组的声明必须要用到new关键字,后面跟着数组的类型int
  11.         //这个数组有3个元素(1,2,3)
  12.         int[] arr = new int[] { 1, 2, 3 };

  13.         //用一个循环将元素打印出来
  14.         //arr.Length是表示arr数组中的元素个数
  15.         for (int i = 0; i < arr.Length; i++)
  16.             //arr[i]是用下标来访问元素
  17.             //用变量i来遍历数组中的元素
  18.             Console.WriteLine(arr[i]);
  19.     }
  20. }
  好,我们来编译运行一下代码,如图:

  在屏幕中,打印出了1 2 3刚才我们声明数组中的3个元素。好,关闭窗口。
  PPT:对于局部变量和域声明,允许一种简写形式,这样就不需要去再声明数组的类型。例如:
  1. int[] arr = new int[] { 1, 2, 3 };
  2. //可以简化为
  3. int[] arr = { 1, 2, 3 };
  好,我们来试一下,把刚才的代码做些修改。
  1. using System;
  2. class Test
  3. {
  4.     static void Main()
  5.     { 
  6.         int[] arr = { 1, 2, 3 };
  7.         for (int i = 0; i < arr.Length; i++)
  8.             Console.WriteLine(arr[i]);
  9.     }
  10. }
  编译运行后,大家可以看到结果还是一样的。当然,我们也可以先声明数组的长度,再给它赋值。代码如下:
  1. //引入一个命名空间
  2. using System;
  3. //声明一个Test类
  4. class Test
  5. {
  6.     //声明一个入口函数
  7.     static void Main()
  8.     { 
  9.         //声明数组长度为3
  10.         int[] arr = new int[3];
  11.         //用下标来读取
  12.         arr[0] = 1;
  13.         arr[1] = 2;
  14.         arr[2] = 3;
  15.         //用一个循环将元素打印出来
  16.         //arr.Length是表示arr数组中的元素个数
  17.         for (int i = 0; i < arr.Length; i++)
  18.             //arr[i]是用下标来访问元素
  19.             //用变量i来遍历数组中的元素
  20.             Console.WriteLine(arr[i]);
  21.     }
  22. }
   我们再执行编译一下,得到的结果还是一样的。下面,我们来用foreach来访问数组。
  1. //声明一个i,来读取数组中的元素
  2. foreach (int i in arr)
  3.    Console.WriteLine(i);
  通过编译执行,效果也是一样的。在实际编程中,很少碰到这样固定长度的数组,一般情况下,数组的长度是未知的。有时还要动态的改变数组的长度,这就是动态数组。C#并不支持动态数组,这让人稍感遗憾(-_-!),需要使用动态数组时,可以使用ArrayList来代替。ArrayList稍后我们会讲,但是我们还是可以在数组声明时,动态去指定数组的长度。下面我们用一个例子来演示如何用变量来指定数组的长度。
  我们在Test类里声明一个过程,它的作用就是初始化并打印一个数组,它带有一个参数ArrLength,它指定了数组的长度。代码如下:
  1. //引入一个命名空间
  2. using System;
  3. //声明一个Test类
  4. class Test
  5. {
  6.     //初始化并打印一个数组
  7.     //它带有一个参数ArrLength指定了数组的长度
  8.     static void PrintArr(int ArrLength)
  9.     {
  10.         //声明一个数组,并把它的长度设定为参数ArrLength
  11.         int[] arr = new int[ArrLength];
  12.         //用循环来给数组的每个元素赋值
  13.         for (int i = 0; i < ArrLength; i++)
  14.             //元素值就是i本身
  15.             arr[i] = i;
  16.         //在屏幕上输出一行Print Array's value
  17.         //意思就是打印数组的值
  18.         Console.WriteLine("Print Array's value");
  19.         //用另个循环把数组的每个循环打印出来,
  20.         for (int i = 0; i < arr.Length; i++)
  21.             //{0}表示要打印一个值,0代表要打印逗号后面的第一个变量
  22.             //{1}也就是要打印逗号后面第2个变量
  23.             Console.WriteLine("arr[{0}]={1}",i,arr[i]);
  24.     }
  25.     //声明一个入口函数
  26.     static void Main()
  27.     { 
  28.         //声明一个i变量,并把处置设为1
  29.         int i = 1;
  30.         while (i > 0)
  31.         {
  32.             //屏幕输出请输入数组的长度
  33.             Console.WriteLine("Please enter the array's length:");
  34.             //用i来读取输入的数字
  35.             //因为ReadLine函数返回的是字符类型,所以要转换成证整数赋给i
  36.             i = Int32.Parse(Console.ReadLine());
  37.             //指定数组长度,打印数组
  38.             PrintArr(i);
  39.         }
  40.     }
  41. }
  我们来编译执行一下,如图:

屏幕打出了Please enter the array's length,请输入数组的长度,假如我们输入3,看效果,然后我们再输入0:

输入3的时候屏幕打出了我们指定长度的3个元素,当然我们也可以实验其他的值。但是我们输入0或者小于0的时候,程序就跳出了,这是我们程序中while循环的作用。
  好,我们看一下 static   void  PrintArr( int  ArrLength)方法,前面方法定义了一个static静态关键字,假如我们把这个关键字去掉的话,我们再执行会出错。为什么会这样呢?这是因为Main函数本身是一个静态的过程,它只能调用域里面的静态成员。关于这一点我们会在以后的课程详细的讲解。如果不想把 PrintArr定义成静态过程,有什么好的解决方法吗?有!可以把它声明在另外一个类里。
  声明一个新类,名字叫SetArray,把我们刚才写的 PrintArr 拷贝过去。然后改写Main函数。代码如下:
  1. using System;

  2. //声明一个新类,名字叫SetArray
  3. class SetArray
  4. {
  5.     //前面必须要加上public属性,Main函数中才能调用
  6.     public void PrintArr(int ArrLength)
  7.     {
  8.         int[] arr = new int[ArrLength];
  9.         for (int i = 0; i < ArrLength; i++)
  10.             arr[i] = i;
  11.         Console.WriteLine("Print Array's value");
  12.         for (int i = 0; i < arr.Length; i++)
  13.             Console.WriteLine("arr[{0}]={1}", i, arr[i]);
  14.     }
  15. }

  16. class Test
  17. {
  18.     static void Main()
  19.     {
  20.         //这里创建了一个SetArray类的实例
  21.         SetArray arr = new SetArray();
  22.         int i = 1;
  23.         while (i > 0)
  24.         {
  25.             Console.WriteLine("Please enter the array's length:");
  26.             i = Int32.Parse(Console.ReadLine());
  27.             //调用实例中PrintArr方法
  28.             arr.PrintArr(i);
  29.         }
  30.     }
  31. }
  我们编译执行效果和前面也是一样的。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值