C#数组,多维数组,动态数组
作者:C/S框架网  发布日期:2011/07/13 23:21:45
C#数组,多维数组,动态数组

数组 Array

C#Array类说明: 提供创建、操作、搜索和排序数组的方法,因而在公共语言运行库中用作所有数组的基类。
数组可分为一维数组和多维数组。数组索引从0开始,array[0]表示第一个元素,最后一个元素表示为 array.Length-1。

Array 类是支持数组的语言实现的基类。但是,只有系统和编译器能够从 Array 类显式派生。用户应当使用由语言提供的数组构造。

一个元素就是 Array 中的一个值。Array 的长度是它可包含的元素总数。Array 的秩是 Array 中的维数。 Array 中维度的下限是 Array 中该维度的起始索引,多维 Array 的各个维度可以有不同的界限。 

 
数组原形。参考System.Array metadata:

public
abstract class Array : ICloneable, IList, ICollection, IEnumerable
{
   ...
}

一维数组定义

string[] sArray = new string[10]; //定义长度为10的字符串数组
int[] iArray = new int[1]; //定义长度为1的数字数组
long[] lArray = new long[] { };//定义长度为0的长整型数组
int[] iValue = new int[3] { 100, 200, 300 };
//定义数组并初始化值

//定义数组并初始化值相当于:

iValue[0]=100;
iValue[1]=200;
iValue[2]=300;



下面数组定义会编译错误

//Array creation must have array size or array initializer
//必须定义数组长度或初始化数组

int[] iArrayNoElement=new int[];
//没有指定长度


多维数组定义


数组可以具有多个维度。
//two-dimensional
//多维数组定义
int[,] twoDim = new int[2, 4]; //定义2行,每行4列的整数数组
int[,] twoDim = new int[2, 3] { { 1, 2, 3 }, { 100, 200, 300 } }; //2维数组赋值

//twoDim 相当于:
twoDim[0,0] =1;
twoDim[0,1] =2;
twoDim[0,2] =3;
twoDim[1,0] =100;
twoDim[1,1] =200;
twoDim[1,2] =300;


一维/多维数组测试案例
public class TestMultiArray
{
   public void Test()
   {
      //定义2维数组
      int[,] ma = new int[4, 2];
      ma[0, 0] = 3;
      ma[0, 1] = 34; //第1行结束
      ma[1, 0] = 1;
      ma[1, 1] = 8;//第2行结束
      ma[2, 0] = 898;
      ma[2, 1] = 83;//第3行结束
      ma[3, 0] = 352;
      ma[3, 1] = 19;//第4行结束
      
      //将2维数组转换为1维数组
      int[] asm = new int[ma.Length]; //ma.Length=2维数组数量
      
      //转换过程
      int t = 0;
      for (int i = 0; i < 4; i++)
      {
         for (int s = 0; s < 2; s++)
         {
            asm[t] = ma[i, s];
            t++; //计算器
         }
      }
      
      Array.Sort(asm); //排序
      
      //输出显示
      foreach (int z in asm)
      Console.WriteLine(z.ToString());
      
   }
}


动态数组(ArrayList)

经常使用的一个类,使用大小可按需动态增加的数组实现IList 接口。

不保证会对 ArrayList 排序。在执行需要对 ArrayList 排序的操作(如 BinarySearch)之前,必须对 ArrayList 进行排序。

ArrayList 的容量是 ArrayList 可以保存的元素数。ArrayList 的默认初始容量为 0。随着元素添加到 ArrayList 中,容量会根据需要通过重新分配自动增加。可通过调用 TrimToSize 或通过显式设置 Capacity 属性减少容量。

使用整数索引可以访问此集合中的元素。此集合中的索引从零开始。

ArrayList 接受空引用作为有效值并且允许重复的元素。

//动态数组原形。参考System.Collections

public
class ArrayList : IList, ICollection, IEnumerable, ICloneable
{
......
}

动态数组测试案例1
using System;
using System.Collections;
public class SamplesArrayList {
   
   public static void Main() {
      
      
//创建并初始化动态数组
      ArrayList myAL = new ArrayList();
      myAL.Add("Hello");
      myAL.Add("World");
      myAL.Add("!");
      
      
//显示动态数组的属性值
      Console.WriteLine( "myAL" );
      Console.WriteLine( " Count: {0}", myAL.Count );
      Console.WriteLine( " Capacity: {0}", myAL.Capacity );
      Console.Write( " Values:" );
      PrintValues( myAL );
   }
   
   public static void PrintValues( IEnumerable myList ) {
      foreach ( Object obj in myList )
      Console.Write( " {0}", obj );
      Console.WriteLine();
   }
  
}



动态数组测试案例2
public void TestDynimicArray()
{
   IList list = new ArrayList();//定义动态数组
   list.Add("www.vjsdn.com");
   list.Add("www.msdn.com");
   list.Add(new object()); //插入一个对象
   
   //循环显示动态数组的元素
   foreach (object o in list)
   Console.WriteLine(o.ToString());
}


上一篇 下一篇