C# 数组实例介绍(图文)

数组即是一组相同类型组合在一起,使用一个通用的名称,通过分配的下标访问的数据集合中的元素。

数组是具有相同类型的一组数据。当访问数组中的数据时,可以通过下标来指明。c#中数组元素可以为任何数据类型,数组下标从0开始,即第一个元素对应的下标为0,以后逐个递增。数组可以一维也可多维。

一维数组是最基本的数组类型,其声明方法如下:

数据类型 [ ] 数组名 ;

举例:
int [ ] anArray ; // 声明一个整型的一维数组

具有两个维度的数组是二维数组,其声明方法如下:
数据类型 [ , ] 数组名 ;
举例:

int [ , ] anArray ; // 声明一个整型的二维数组
float [ , ]anArrayOfFloats; // 声明一个浮点型的二维数组
string [ , ] anArrayOfStrings; // 声明一个字符串型的二维数组

声明数组变量时,还没有创建数组,还没有为数组中元素分配任何内存空间,因此,声明数组后,需要对数组实例化:

anArray = new int [2,4] ;
anArrayOfStrings = new stirng [2,4] ;

我们也可以用给定的值对数组元素进行初始化。

int [, ] anArray = new int [2, 4] {{1,2,3,4},{5,6,7,8}};
string [, ] anArrayOfStrings = new string [2, 2] {{"某甲","某乙"}, {"冠军" ,"亚军" }};

也可使用下列快捷方式:

int [, ] anArray = {{0,1,2,3},{1,2,3,4}};
string [, ] anArrayOfStrings = {{"某甲","某乙"}, {"冠军" ,"亚军" }};

在C#语言中,数组为我们提供了一些有用的特性,利用这些特性,我们可以完成一些更高级的功能。
数组名.Length :返回一个整数,该整数表示该数组的所有维数中元素的总数。
数组名.Rank :返回一个整数,该整数表示该数组的维数。
数组名.GetLength(int dimension) :返回一个整数,该整数表示该数组的指定维(由参数dimension指定,维度从零开始)中的元素个数。

4.foreach语句针对数组或集合中的每一个元素,循环运行嵌入语句。
foreach语句的语法格式为:
foreach (数据类型 标识符 in 表达式)
嵌入语句

//包含6个元素的一维整数数组;
int[] mf1=new int[6]; //注意初始化数组的范围,或者指定初值;

//包含6个元素的一维整数数组,初值1,2,3,4,5,6
int[] mf2=new int[6]{1,2,3,4,5,6};
 
//一维字符串数组,如果提供了初始值设定项,则还可以省略 new 运算符
string[] mf3={"c","c++","c#"};

//一维对象数组
Object[] mf4 = new Object[5] { 26, 27, 28, 29, 30 };
 
//二维整数数组,初值mf5[0,0]=1,mf5[0,1]=2,mf5[1,0]=3,mf5[1,1]=4
int[,] mf5=new int[,]{{1,2},{3,4}};
 
//6*6的二维整型数组
int[,] mf6=new mf[6,6];

下面来看一个一维字符串数组的遍历

using System;
public class MikeCat
{
static void PrintArray(string[] arr)
{
//打印数组元素,arr.Length 表示数组元素的个数
for(int i=0;i<arr.Length;i++)
{
Console.WriteLine("arr[{0}]={1}",i,arr[i]);
}
}
public static void Main()
{
string[] arr={"c","c++","c#"};
//将数组作为一个参数传递
PrintArray(arr);
}
} 

程序结果:arr[0]=c arr[1]=c++ arr[2]=c#

下面来看一个4行2列(4*2)的整型数组的遍历:

using System;
public class MikeCat
{
static void PrintArray(int[,] arr)
{
//通过两次FOR循环遍历二维数组
for(int i=0;i<4;i++)//初始化i作为循环变量,i++实现该变量的自增运算。
//for循环满足条件后执行完循环体一次后执行i++,然后进入下次循环。简单的c语法,这里做简单介绍供初学者学习。(详细可参阅《c# 高级编程4.0》一书)
{
for(int j=0;j<2;j++)
{
Console.WriteLine("arr[{0},{1}]={2}",i,j,arr[i,j]);//打印每个二维数组元素
}
}
}
public static void Main()
{
//主函数
//将数组作为一个参数传递
PrintArray(new int[,]{{1,2},{3,4},{5,6},{7,8}};
}
} 

运行结果:arr[0,0]=1 arr[0,1]=2 arr[1,0]=3 arr[1,1]=4 arr[2,0]=5 arr[2,1]=6 arr[3,0]=7 arr[3,1]=8

数组的属性:

•数组可以是一维、多维或交错的。
•数值数组元素的默认值设置为零,而引用元素的默认值设置为 null。
•交错数组是数组的数组,因此,它的元素是引用类型,初始化为 null。
•数组的索引从零开始:具有 n 个元素的数组的索引是从 0 到 n-1。
•数组元素可以是任何类型,包括数组类型。
•数组类型是从抽象基类型 Array 派生的引用类型。由于此类型实现了 IEnumerable 和 IEnumerable,因此可以对 C# 中的所有数组使用 foreach 迭代。
我对数组的理解:在 C# 中,数组实际上是对象,而不只是像 C 和 C++ 中那样的可寻址连续内存区域

一维数组 :一维数组以线性方式存储固定数目的项,只需一个索引值即可标识任意一个项。
一维数组实例:

static class Program
  { 

    static void Main()
    {
      //一维数组
      int[] arry = new int[9] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
      arry[0] = 2;//第一行为2
      Console.WriteLine(arry);
  }
}

运行结果截图

二维数组实例

//二维数组 

      int[,] arry2 = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };
      arry2[1, 0] = 5;//改变第二列的第一行为5 

      for (int i = 0; i < arry2.GetLength(1); i++)
      {
        for (int y = 0; y < arry2.GetLength(1); y++)//第一个for循环遍历二维数组的列,第二个for循环遍历二维数组的行
        {
          Console.Write(arry2[i, y]);
        }
      }

运行结果截图

交错数组实例

//交错数组
     int[][] arry3 = new int[3][];//交错数组必须指定下标的个数 

     arry3[0] = new int[] { 0, 1, 2, 4 };
     arry3[1] = new int[] { 3, 4, 5, 6 };
     arry3[2] = new int[] { 4, 8, 9 };
     for (int x = 0; x < arry3.Length; x++)
     {
       for (int z = 0; z < arry3[x].Length; z++)
       {
         Console.Write(arry3[x][z]);
       }
       Console.WriteLine();//以inti的数组元素为准进行换行.
     }

运行结果截图

C# 还提供 foreach 语句。该语句提供一种简单、明了的方法来循环访问数组的元素,看下面实例。


static void Main()
    {
int [] arry4=new int[100]; 

      foreach (int a in arry)
      {
        Console.Write(arry);
      }
}

运行结果截图

源代码下载地址:ArrayModel(jb51.net).rar

(0)

相关推荐

  • C#的锯齿数组以及C++实现代码

    原则: 1.锯齿数组首先是二维数组,第一维的维数是确定的 2.之所以在C#中能够出现灵活的锯齿数组,是因为,C#的数组是引用类型(本质上存放的是指针) 根据这个引用类型(指针)的概念,C++中用指针数组同样可以实现 C#中: class A{} int szA[][] = new int[3][]; szA[0] = new int[2]; szA[1] = new int[6]; szA[2] = new int[3]; 当然此时实际的各个数组元素(整形变量)尚未初始化值,C#不允许使用未经初

  • c#协变和逆变实例分析

    本文实例讲述了c#协变和逆变的原理及应用.分享给大家供大家参考.具体如下: 由子类向父类方向转变是协变,用out关键字标识,由父类向子类方向转变是逆变,用in关键字 协变和逆变的应用   一. 数组的协变 复制代码 代码如下: Animal[] animalArray = new Dog[]{}; 说明:声明的数组数据类型是Animal,而实际上赋值时给的是Dog数组:每一个Dog对象都可以安全的转变为Animal.Dog向Animal方法转变是沿着继承链向上转变的所以是协变   二. 委托中的

  • C#各种数组的用法实例演示

    本文以实例演示了C#各种数组的基本用法.主要包括:一维数组.二维数组.锯齿型数组.长度不同的两个数组.3行4列的矩阵数组等. 具体实现代码如下: using System; class ArrayApp { public static void Main ( ) { //一维数组用法:计算数组中奇偶数的个数 Console.WriteLine("一维数组演示:一维数组中的奇偶数个数"); int[ ] arr1 = new int[ ] {8, 13, 36, 30, 9, 23, 4

  • C#和Java中二维数组区别分析

    本文实例讲述了C#和Java中二维数组区别,分享给大家供大家参考.具体分析如下: 在Java中使用二维数组可以如下代码: 复制代码 代码如下: public class Array2D{     public static void main(String[] args){         int myInt[][]=new int[5][10];         //遍历,给数组中的每一个数组赋值         for(int i=0;i<myInt.length;i++){        

  • C#递归实现将一整数逆序后放入一数组中

    本文实例讲述了C#递归实现将一整数逆序后放入一数组中的方法,分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: static void Main(string[] args) {     int m = 1236578;     int[] ms = new int[m.ToString().Length];     Rev(m.ToString().Length, m, ref ms);     for (int i = 0; i < m.ToString().Length; i+

  • C# byte数组与Image相互转换的方法

    功能需求: 1.把一张图片(png bmp jpeg bmp gif)转换为byte数组存放到数据库. 2.把从数据库读取的byte数组转换为Image对象,赋值给相应的控件显示. 3.从图片byte数组得到对应图片的格式,生成一张图片保存到磁盘上. 这里的Image是System.Drawing.Image. 以下三个函数分别实现了上述三个需求: 复制代码 代码如下: // Convert Image to Byte[]        private byte[] ImageToByte(Im

  • C# 泛型数组学习小结

    C# 泛型和数组在 C# 2.0 中,下限为零的一维数组自动实现 IList<T>.这使您可以创建能够使用相同代码循环访问数组和其他集合类型的泛型方法.此技术主要对读取集合中的数据很有用.IList<T> 接口不能用于在数组中添加或移除元素:如果试图在此上下文中调用 IList<T> 方法(如数组的 RemoveAt),将引发异常.下面的代码示例演示带有 IList<T> 输入参数的单个泛型方法如何同时循环访问列表和数组,本例中为整数数组. C# 泛型和数组

  • c#获取数组中最大数的值

    求数组中最大的数的值:1.数组的max函数: 复制代码 代码如下: class Program    {        static void Main(string[] args)        {            int[] array = {1,3,5,2,4,6,7,9,0,8};           int max= GetMax(array);            Console.WriteLine("数组中最大的值是{0}",max);            Co

  • C#4.0新特性之协变与逆变实例分析

    本文实例讲述了C#4.0新特性的协变与逆变,有助于大家进一步掌握C#4.0程序设计.具体分析如下: 一.C#3.0以前的协变与逆变 如果你是第一次听说这个两个词,别担心,他们其实很常见.C#4.0中的协变与逆变(Covariance and contravariance)有了进一步的完善,主要是两种运行时的(隐式)泛型类型参数转换.简单来讲,所谓协变(Covariance)是指把类型从"小"升到"大",比如从子类升级到父类:逆变则是指从"大"变到

  • c#泛型序列化对象为字节数组的示例

    序列化对象为字节数组 复制代码 代码如下: using System.IO;using System.Runtime.Serialization.Formatters.Binary;        protected byte[] Serialize<T>(T t)        {            MemoryStream mStream = new MemoryStream();            BinaryFormatter bFormatter = new BinaryFo

  • c#基础之数组与接口使用示例(遍历数组 二维数组)

    一.初始化数组: 复制代码 代码如下: string[] s1 = {"aaa","bbb","ccc"}   //直接赋值string[] s2 = new string[5] {"aaa","bbb","ccc"}; //赋值加指定长度string[] s3 =  new string[]{"aaa","bbb","ccc"

随机推荐