小鱼儿-fly

c#,ASP.NET 一条艰辛而漫长的道路...千里之行,始于足下!

导航

C# 数组

Posted on 2010-10-27 13:57  小鱼儿-fly  阅读(1609)  评论(0编辑  收藏  举报

1. 一维数组

声明:   type[] arratName;

ex: int [] arr=new int[5];//int[] arr = new [5]{1,2,3,4,5};//int [] arr={1,2,3,4,5};

遍历数组:

foreach(int n in arr)

{

  Console.WriteLine(n);

}

2. 二维数组

声明: type[,] arrayName;

ex: int[,] arr=new int[2,3]{{1,2},{2,3,4}};

遍历数组:

\\行数

for(int i=0;i<arr.Rank;i++)

{

  string str="";

  \\列数

  for(int j=0;j<arr.GetUpperBound(arr.Rank-1);j++)

  {

    str=str+Convert.ToString(arr[i,j])+"";

  }

  Console.WriteLine(str);

}

3.ArrayList类

  • 数组的容量是固定的,而ArrayList的容量是可以自动扩充的
  • 提供添加,删除和插入某一元素
  • 提供将只读和固定大小包装返回到集合的方法。
  • 只能是一维的。

提供了3个构造器:

a.默认的构造器:

public ArrayList();

实例化: ArrayList List=new ArrayList();

b.用一个ICollection对象来构造,并将该集合的元素添加到ArrayList中

public ArrayList(ICollection);

实例化: ArrayList List=new ArrayList(arrayName);//要添加集合的数组名

c.用指定的大小初始化内部的数组

public ArrayList(int);

实例化: ArrayList List=new ArrayList(n);

 

添加元素方法: public virtual int Add(Object value)

插入元素方法: public virtual int Insert(int index,Object value)

删除元素: public void Clear();//移除所有元素

      public virtual void Remove(Object obj);//移除特定对象的第一个匹配值

      public virtual void RemoveAt(int index);//移除指定索引处元素

      public virtual void RemoveRange(int index,int count);//移除一定范围的元素

ArrayList的遍历:foreach(type n in list){ Console.WriteLine(n);}

ArrayList元素查找: public virtual bool Contains(object item);

          int ArrayList.IndexOf(object value) 从前(索引 0)往后查找,返回找到的第一个和 obj 相同的元素的索引
          int ArrayList.IndexOf(object value, int startIndex)
          int ArrayList.IndexOf(object value, int startIndex, int count)
          int ArrayList.LastIndexOf(object value) 从后往前(索引 0)查找,返回找到的第一个和 obj 相同的元素的索引
          int ArrayList.LastIndexOf(object value, int startIndex)
          int ArrayList.LastIndexOf(object value, int startIndex, int count)

 4. Hashtable

用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。

Hashtable中keyvalue键值对均为object类型,所以Hashtable可以支持任何类型的keyvalue键值对.

简单操作:

添加一个keyvalue键值对:HashtableObject.Add(key,value);
去除某个keyvalue键值对:HashtableObject.Remove(key);
移除所有元素:             HashtableObject.Clear();
判断是否包含特定键key:  HashtableObject.Contains(key);

遍历哈希表:

 遍历哈希表需要用到DictionaryEntry Object,代码如下:
方法一
 foreach (System.Collections.DictionaryEntry objDE in objHasTab)
{
    Console.WriteLine(objDE.Key.ToString());
    Console.WriteLine(objDE.Value.ToString());
}

 

方法二
System.Collections.IDictionaryEnumerator enumerator = objHashTablet.GetEnumerator();
while (enumerator.MoveNext())
{
    Console.WriteLine(enumerator.Key);         // Hashtable关健字
    Console.WriteLine(enumerator.Value);      // Hashtable值
}

 

排序:

  对哈希表进行排序在这里的定义是对keyvalue键值对中的key按一定规则重新排列,但是实际上这个定义是不能实现的,因为我们无法直接在Hashtable进行对key进行重新排列,如果需要Hashtable提供某种规则的输出,可以采用一种变通的做法:
 ArrayList akeys=new ArrayList(ht.Keys); //file别忘了导入System.Collections
 akeys.Sort(); //file按字母顺序进行排序
 foreach (string skey in akeys)
 {
   Console.Write(skey + );
   Console.WriteLine(ht[skey]);//排序后输出
 }

5.交错数组:

声明方法:

int [][] numbers=new int[2][]{new int[]{2,3,4},new int[]{5,6,7,8,9}};

可省略第一个数组大小,如下所示:

int[][] numbers = new int[][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} };

或:

int[][] numbers = { new int[] {2,3,4}, new int[] {5,6,7,8,9} };

对于交错数组的元素没有初始化语法。

int[][] arr=new int[2][];

numbers[0]=new int[3];

也就是说,当声明一个交错数组时,行数是固定的。以上就是只有2行的数组。