1. Array-数组
在C#中定义一个数组的方法一般为:
Data Type [] Array=new DataType [Size];
其中Data Type可以是基本数据类型和对象类型数据,Size是数组元素的个数.
例子定义一个int类型的数据来表示一个班上的人数
int [] classNum=new int[20];
type[] typename=new type[size];
如
int[] a=new int[2];string[] str=new string[5];
实事上我们平常是用int[],string[]...的,此时我们已经创建一个Array数组,只不过我们平常没有这种意识而已.
(1):type数据类型不能缺;且要统一,而不能是如 int[] a=new Array[];
(2):数组的大小size不能缺,否则c#认为是出错的,因为数组是一段固定长度的内存;
(3):右边是一个中括号[],而不是()
数组对象的方法有静态方法和实例方法;
public static int BinarySearch(Array a, object v);
数组a必须是一维而且排好序的;此方法的结果是返回a中与v匹配的第一个元素的索引号.如果没有匹配元素则返回一个负数-1;
public static int BinarySearch(Array a, object v, IComparer comp);
与前面的方法相似,区别在于comp;用于比较符号;
public static int BinarySearch(Array a, int start,int count, object v)
从a中start开始的count个元素中查询与v匹配的元素的一个索引号.
public static int BinarySearch(Array a, int start,int count, object v,IComparer comp)
与上一个方法相似.区别在于用比较法补偿;
public static void Clear(Array a, int start, int count)
将数组a中从start开始的从count个元素置零;
public virtual object Clone()Copy这个数组;
public static void Copy(Array source,Array dest, int count)
将source中的count个元素赋值到数组dest中.;
public virtual void CopyTo(Array dest, int start)
将调用此方法的数组对象中的start个元素赋值到dest中.
public static Array CreateInstance(Type t, int size)
创建一个有Size个元素的数组,其中元素类型是t;
public static Array CreateInstance(Type t, int size1, int size2)
创建一个二维数组,数组的参数是[size1][size2];数组元素的类型是t;
public static Array CreateInstance(Type t, int size1,int size2, int size3)
创建一个三维数组,元素类型是T,同创建二维数组一样.;
public static Array CreateInstance(Type t, int[ ] sizes)
创建一个参数sizes维的数组,元素类型是t;
public static Array CreateInstance(Type t, int[ ] sizes,int[ ] startIndexes)
创建一个多维数组,数组维数是sizes,每一个元素的数据类型是t.数组中每一维数组的开始索引号是startIndexes;
public override bool Equals(object v)
判断v是否与调用此方法的数组对象是否相同.
public virtual IEnumerator GetEnumerator()
返回数组的枚举对象
public int GetLength(int dim)
返回多维数组第dim维的元素的个数
public override int GetHashCode()
返回数组的哈希码;
public int GetUpperBound(int dim)
返回多维数组第dim维的元素的最后一个索引值
public object GetValue(int index) 返回一维数组第index个元素的值
public object GetValue(int idx1, int idx2)和public object GetValue(int idx1, int idx2,int idx3)分别获取2维和3维数组的某个特殊元素的值.;
public static int IndexOf(Array a, object v) 返回a中与v的值一样的第一元素的索引值;
public static int IndexOf(Array a, object v,int start)
从a中第start个元素开始,返回与v的值一样的元素位置;
public static int IndexOf(Array a, object v,int start, int count)
从a中第start个元素开始的count个元素中,返回与v的值一样的元素位置;
public static int LastIndexOf(Array a, object v,int start, int count)
在a中得第start个元素开始的count个元素中查找与v相等的元素的索引号
public static void Reverse(Array a) 将数组a所有元素做个逆转;
public void SetValue(object v, int index) 设置数组对象的第index个元素的值为v;
对象二维和三维数组有相似的函数;public void SetValue(object v, int idx1, int idx2)和public void SetValue(object v, int idx1,int idx2, int idx3)
public static void Sort(Array a) 对数组a进行排序;
二. 定义和初始化一个数组
int[] myIntArray; myIntArray = new int[4]; 利用数组的函数IndexOf() and LastIndexOf()来获取数组中某一个特定元素的位置;
代码如下 | 复制代码 |
int[] intArray = {1, 2, 1, 3}; for (int i = 0; i < intArray.Length; i++) { Console.WriteLine("intArray[" + i + "] = " + intArray[i]);} int index = Array.IndexOf(intArray, 1); Console.WriteLine("Array.IndexOf(intArray, 1) = " + index); index = Array.LastIndexOf(intArray, 1); Console.WriteLine("Array.LastIndexOf(intArray, 1) = " + index); |
二,C# ArrayList数组的用法范例:
代码如下 | 复制代码 |
ArrayList al = new ArrayList(); foreach (int obj in al)//或foreach (object obj in al),因为al是一个object类型的数组 |
arrayList利用enumerator来访问数组:
代码如下 | 复制代码 |
ArrayList list = new ArrayList(1); for (int i = 0; i < 10; i++) list.Add(i); IEnumerator etr = list.GetEnumerator();//枚举 while (etr.MoveNext()) Console.Write(etr.Current + " "); |
运行结果:
对了,要想在C#中利用ArrayList必须在系统命名空间中加入一个引用,否则会出现错误的。using System.Collections;
下面看一些动态数组的常用方法:
代码如下 | 复制代码 |
ArrayList list = new ArrayList(5); //构造一个动态数组 // list.Clear();//清楚数组中所有的元素 Console.WriteLine(); Console.WriteLine("there are {0} elements in the list", list.Count); ArrayList shuzu = new ArrayList(5); shuzu.Add("仙剑一"); shuzu.Add("亮剑"); shuzu.Add("bianceng."); shuzu.Add("国家宝藏"); shuzu.Add("陆小凤"); for (int x = 0; x <= shuzu.Count - 1; x++) Console.WriteLine(shuzu[x]); Console.WriteLine("now reverse itn"); shuzu.Reverse(); Console.WriteLine("after reversern"); Console.WriteLine(); for (int x = 0; x <= shuzu.Count - 1; x++) Console.WriteLine(shuzu[x]); |
三,ArrayList和Array相互之间的转化
(1)以下是把ArrayList数组中的值拷贝到Array中去的实例用法
代码如下 | 复制代码 |
//int[] IResult=new int[al.Count]; foreach(int item in IResult) Response.Write("以下是把Array数组中的值拷贝到ArrayList中去的实例用法" + " int[] a ={ 222, 333, 555 }; |