C#视频(陈广版)学习笔记2-3

本2.3节讲解C#中的数组

using System;
class Test
{
 static void Main()    //声明一个Main()入口函数
 {
  int[] arr=new int[] {1,2,3}; //数组的声明用到new关键字,后面跟着数组的类型,然

后可以直接给它赋值,这个数组有三个元素,1,2,3
  //下面用一个循环打印出来
  for (int i=0;i<arr.Length;i++)
   Console.WriteLine(arr[i]); //用下标的方法来访问数组  
 }
}

数组,对于局部变量和域声明,允许一种简写形式,这样就不需要去声明数组类型.
例如,int[] arr=new int[]{1,2,3}; 可以简写为int[] arr={1,2,3};

using System;
class Test
{
 static void Main()    //声明一个Main()入口函数
 {
  //int[] arr=new int[] {1,2,3};
  int [] arr={1,2,3};
  
  for (int i=0;i<arr.Length;i++)
   Console.WriteLine(arr[i]);
 }
}

输出效果是一样的,当然也可以先声明数组长度再赋值

using System;
class Test
{
 static void Main()    //声明一个Main()入口函数
 {
  int[] arr=new int[3];
  arr[0]=1;
  arr[1]=2;
  arr[2]=3;
  
  for (int i=0;i<arr.Length;i++)
   Console.WriteLine(arr[i]);
 }
}

效果一样,当然也可以用一个循环来给数组赋值

using System;
class Test
{
 static void Main()   
 {
  int[] arr=new int[3];
  arr[0]=1;
  arr[1]=2;
  arr[2]=3;
  //下面用一个循环打印出来
  foreach (int i in arr) //foreach方法访问数组,声明一个i来读取数组里面的内容
   Console.WriteLine(i);
 }
}

===

一般情况下,数组的长度是未知的,且是动态改变的,也就是通常说的动态数组,但C#并不支持动态数组,可

以用下面将讲到的arrayList来实现.

但是可以在数组声明时动态指定数组长度,这就要借变量来声明数组的长度.
演示如下:

using System;
class Test
{
 static void PrintArr(int ArrLength) //Main()函数只能调用域里面的静态成员,所以声明成

satic
 {
  int[] arr=new int [ArrLength];
  for(int i=0;i<arr.Length;i++)
   arr[i]=i;
  Console.WriteLine("Print Array's value");
  for(int i=0;i<arr.Length;i++)
   Console.WriteLine("arr[{0}]=[{1}]",i,arr[i]); //打印,将i值赋予0位

置,arr[i]值赋予1位置

}   
 static void Main()   
 {
  int i=1;
  while (i>0) //输入小于等于0时,结束打印
  {
   Console.WriteLine("Please enter array's length:");
   i=Int32.Parse(Console.ReadLine()); //readline返回的是字符,所以要用

int32.parse函数转换为整数再赋给i
   PrintArr(i); //把i作为参数传递到PrintArr
  }
   
 }
}

static void PrintArr(int ArrLength) //Main()函数只能调用域里面的静态成员,所以声明成satic
如果不想声明为static,可以在声明在另一个类里面.如,

using System;
class SetArray
{
 public void PrintArr(int ArrLength)
 {
  int[] arr=new int [ArrLength];
  for(int i=0;i<arr.Length;i++)
   arr[i]=i;
  Console.WriteLine("Print Array's value");
  for(int i=0;i<arr.Length;i++)
   Console.WriteLine("arr[{0}]=[{1}]",i,arr[i]); //打印,将i值赋予0位

置,arr[i]值赋予1位置

}   
}
class Test
{
 static void Main()   
 {
  SetArray a=new SetArray();

int i=1;
  while (i>0) //输入小于等于0时,结束打印
  {
   Console.WriteLine("Please enter array's length:");
   i=Int32.Parse(Console.ReadLine()); //readline返回的是字符,所以要用

int32.parse函数转换为整数再赋给i
   a.PrintArr(i); //把i作为参数传递到PrintArr
  }
   
 }
}

===3====

C#并不支持动态数组.要使用到动态数组,可以用ArrayList来代替

<1.ArrayList位于System.Collections命名空间
<2.ArrayList对象是较为复杂的数组.ArrayList类提供了Array类未提供的一些功能

ArrayList与Array的区别:

<1.Array的容量是固定的,而ArrayList的容量可根据需要自动扩充.
<2.ArrayList提供添加,插入或移除某一范围元素的方法.在Array中,只能一次获取或设置一个元素的值.

例:
using System;
using System.collections;
class ArrList
{
 static void Main()
 {
  ArrayList arr=new ArrayList();
  string str1;
  while (true)
  {
   Console.WriteLine("Please add a string to ArrayList:");
   str1=Console.ReadLine(); //等待用户的输入
   if(str1=="end")
    break;
   arr.Add(str1);  //演示了如何给ArrayList添加一个元素
   Console.WriteLine();  //打印空行
   for (int i=0;i<arr.Count;i++)
    Console.Write("{0} ",arr[i]);
   Console.WriteLine("/n");  //打印换行符
  }
 }
}

详细使用见MSDN

多维数组:

int[] a1; //整数类型的一维数组
int[,] a2; //整数类型的二维数组
int[,] a2=new int[2,3];
int[,] a2=new int[,]{{1,2,3},{4,5,6}};

int[,,] a3; //整数类型的三维数组
int[,,] a3=new int[10,20,30];  //定义三维数组,空间为10X20X30

数组的数组:
int[][] j2; //类似C中的二维数组,C#中是不规划数组:数组的数组

int[][] j2=new int[3][];
 j2[0]=new int[]{1,2,3};
 j2[1]=new int[]{1,2,3,4,5,6};
 j2[2]=new int[]{1,2,3,4,5,6,7,8};

int[][][] j3; //数组的数组的数组

一个数组演示二维矩阵:

using system;
class Matrix
{
    static void Main()
    {
        int[,] a2 = new int[, ] { { 1, 2, 3 }, { 4, 5, 6 } };
        int[,] ij = new int[4, 6];
        int m;
        //int k = ij.Rank; //获得数组的维数
        for (int i = 0; i < ij.GetLength(0); i++)
        {
            for (int j = 0; j < ij.GetLength(1); j++)
            {
                m = (i + 1) * 10 + (j + 1);
                Console.Write("{0} ", m);
            }
            Console.WriteLine();
        }
    }
}

陈广 C#学习笔记(数组2-3)相关推荐

  1. C#视频(陈广版)学习笔记21

    索引器和数组的比较 索引器的索引值(index)类型不受限制为整数 用来访问数组的索引值(index),其类型一定为整数,然后索引器可以定义其他类型的索引值,索引器可以重载. 一个类并不受限只能够定义 ...

  2. C#视频(陈广版)学习笔记24

    委托声明定义了一个种类型,它用一组特定的参数,以及返回类型来封装方法,对于静态方法,委托对象封装要调用的方法.对于实例方法委托对象同时封装一个实例和该实例上的一个方法.如果有一个委托对象和一组适当的参 ...

  3. c语言中void arrout,c语言学习笔记(数组、函数

    <c语言学习笔记(数组.函数>由会员分享,可在线阅读,更多相关<c语言学习笔记(数组.函数(53页珍藏版)>请在人人文库网上搜索. 1.数组2010-3-29 22:40一维数 ...

  4. Go语言学习笔记-数组、切片、map

    Go语言学习笔记-数组.切片.map 数组:同一数据类型元素的集合.是值类型,长度固定无法修改 声明格式:var 数组名字 [元素数量] 数据类型 var arr [3] int //声明定义了一个长 ...

  5. 陈表达VBA学习笔记-新建工作表鼠标右键菜单按钮

    陈表达VBA学习笔记-新建工作表鼠标右键菜单按钮:新建一个我的菜单按钮 设置对应的宏过程名称为 [我的菜单宏] 点击按钮弹窗信息,信息可自定义设置 详细代码如下: Sub 新建右键菜单()Dim 菜单 ...

  6. Java 学习笔记 - 数组类型互转

    Java 学习笔记 - 数组类型互转 数组类型转换 字符串数组 to (Integer.Long.Double)列表 传统方式 Java8 Stream方式 数组 to 数组 字符串数组 to (in ...

  7. C 学习笔记 - 数组

    在学习了 C 语言的数组之后,我发现 C 中的数组与 C# 中的数组除了书写形式上略有区别,其它的基本上都一模一样. 因为之前有 C# 的底子,所有学习 C 语言,感觉也挺轻松的,不过 C 和 C# ...

  8. 小陈的java学习笔记

    两周的总结 Java的环境搭建 环境变量的配置 新建 系统变量: JAVA_HOME 变量值: 文本框输入JDK的安装路径 在系统变量PATH,的文本框的起始位置添加 %JAVA_HOME%\bin; ...

  9. php 学习笔记 数组1

    1.一般情况下$name['tom']和$name[tom]是相同的:但没有引号的键不能和常量区别开,如:define('index', 5)时:$name['tom']和$name[tom]不同 2 ...

最新文章

  1. JustifyTextView 解决TextView中英文混排自动换行的问题
  2. Handler 系列二:如何通信
  3. P1875 佳佳的魔法药水 (最短路,DP)
  4. Eclipse搭建android环境及Genymotion模拟器安装问题解决方法
  5. CCNA必会知识点:PAP单双向认证
  6. 修改win10 默认网卡 --其实就是改网卡接口跃点
  7. HTML之CSS画三角形原理,纯CSS写三角形样式集合(原理解析)
  8. 面试官最爱问的并发问题
  9. python从列表随机取出多个数据_【python】从数组随机取数据
  10. android汉字转url,Android将文本中的URL转换为超链接工具类(原文本有超链接标签也适用)...
  11. Opatch java 路径_Windows平台下opatch apply报错:OUI-67073
  12. 借呗还款日都是一样吗?
  13. mongodb指南(翻译)(十六) - developer zone - 何时使用GridFS
  14. 以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机...
  15. PyTorch搭建GoogLeNet模型(在CIFAR10数据集上准确率达到了85%)
  16. html5 塔防小游戏,HTML5塔防小游戏源代码
  17. python中一元二次方程的判别式_一元二次方程根的判别式知识点
  18. linux sftp put 文件夹,使用sftp命令上传文件夹方法
  19. 用直接插入法进行数组排序
  20. win101909要不要更新_win101909版本千万别更新?win10 1909值得升级吗要不要更新

热门文章

  1. Webstorm 2020.3 安装 Emmet 插件
  2. 第十四篇 数据分析案例
  3. 便利贴--43{vue3+ts+setup+ArcoDesign 表格和表单 单页模板(整合)} --舍弃--不删--不更新
  4. 通达信的5分钟数据格式 *.lc5
  5. 2020-11-10,待业快乐
  6. java defunct怎么杀掉_僵尸进程的产生和避免,如何kill杀掉linux系统中的僵尸defunct进程...
  7. NFT空投预售的几种方法
  8. usb2.0 ehci host controller 简单数据传输实例的步骤分析
  9. mysql 列转行 unpivot_Spark SQL中列转行(UNPIVOT)的两种方法
  10. 本科大学生的大数据专业学习路线