1. 數組概述
數組是包含若干相同類型的變量,這些變量都可以通過索引進行訪問。數組中的變量稱為數組的元素,數組能夠容納元素的數量稱為數組的長度。數組中的每個元素都具有唯一的索引與其對應。
2. 一維數組的聲明和使用
2.1 聲明:
基本語法:
[csharp]
Type[]arrayName;
示例代碼:聲明一個int類型的一維數組arr
[csharp]
int[] arr;
arr=new int[5]{1,2,3,4,5}; //初始化其中的元素分別為1,2,3,4,5
2.2 使用:
示例代碼:
[csharp]
static void Main(string[] args)
{
int[] arr ={1,2,3,4,5}; //定義一個一維數組,並為其賦值
foreach (int n in arr) //使用foreach語句循環遍歷一維數組中的元素
Console.WriteLine("{0}", n + "");
Console.ReadLine();
}
運行結果:
3. 二維數組的聲明和使用
3.1聲明:
基本語法:
[csharp]
type[ ,] arrayName;
示例代碼:聲明一個兩行兩列的二維數組並初始化
[csharp]
int[ , ]arr=new int[2,2]{{1,2},{3,4}};
3.2使用
3.2.1靜態二維數組
示例代碼:
[csharp]
static void Main(string[] args)
{
int[,] arr = new int[2, 2] {{1,2},{3,4}}; //自定義一個二維數組
Console.Write("數組的行數為:");
Console.Write(arr.Rank); //獲得二維數組的行數
Console.Write("\n");
Console.Write("數組的列數為:");
Console.Write(arr.GetUpperBound(arr.Rank-1)+1); //獲得數組的列數
Console.Write("\n");
for (int i = 0; i < arr.Rank;i++) //循環輸出二維數組中的每個元素
{
string str = "";
for (int j = 0; j <arr.GetUpperBound(arr.Rank - 1) + 1; j++)
{
str = str +Convert.ToString(arr[i, j]) + " ";
}
Console.Write(str);
Console.Write("\n");
}
Console.ReadLine();
}
運行結果:
3.2.2動態二維數組
示例代碼:
[csharp]
static void Main(string[] args)
{
Console.Write("請輸入動態數組的行數:");
int row = Convert.ToInt32(Console.ReadLine());//定義動態數組的行數
Console.Write("請輸入動態數組的列數:");
int col = Convert.ToInt32(Console.ReadLine());//定義動態數組的列數
int[,] arr = new int[row,col]; //根據定義的行數和列數定義動態數組
Console.WriteLine("結果:");
for (int i = 0; i< row; i++)
{
for (int j = 0; j < col; j++)
{
Console.Write(i+j .ToString()+" "); //輸出動態數組中的元素
}
Console.WriteLine();
Console.ReadLine();
}
}
運行結果:
4. 數組的基本操作
4.1如何遍歷數組
使用foreach語句可以實現數組的遍歷功能。在2.1的示例代碼中已有涉及,此處就不舉例了。
4.2 添加/刪除數組元素
可以利用數組的索引號對數組元素進行刪除,但是這種方法不能夠真正地實現對數組元素的刪除,一般不推薦使用。等以後學習了ArrayList類後,可以使用它來實現數組的刪除。
4.3 對數組進行排序(以後會是單獨的一章,詳細解釋)
4.3.1 遍歷排序法:如冒泡法、直接插入法和選擇排序法等。
4.3.2 Array類的Sort和Reverse排序法
4.4數組的合並和拆分
5. ArrayList類
ArrayList類相當於一種高級的動態數組,它是Array類的升級版。位於System.Collections命名空間下,可以動態添加和刪除元素。
5.1 聲明
方式一:ArrayList List= new ArrayList();
示例代碼:
[csharp]
ArrayList list=new ArrayList(); //聲明一個ArrayList對象
for (int i=0;i <10;i ++) //給其添加10個int類型的元素值
list .Add (i);
方式二:ArrayList List=new ArrayList(arrayName);
示例代碼:
[csharp]
int[] arr = new int[] {1,2,3,4,5,6,7,8,9 }; //聲明一維數組
ArrayList list=new ArrayList (arr ); //將一維數組中元素添加到已聲明的ArrayList對象中
方式三:ArrayList List=new ArrayList(n);
示例代碼:
[csharp]
ArrayList list=new ArrayList (10); //聲明一個ArrayList對象
for (int i=0;i <List.Count;i++) //給其添加10個int類型的元素值
list .Add (i);
5.2使用
5.2.1ArrayList元素的添加
可以使用ArrayList類提供的Add方法和Insert方法。
示例代碼:
[csharp]
//使用Add方法(將對象添加到ArrayList集合的結尾處)
int[] arr = new int[] { 1,2, 3, 4, 5, 6 };
ArrayList list = newArrayList(arr); //使用聲明的一維數組實例化一個ArrayList對象
list.Add(7); //為ArrayList對象添加對象
//使用Insert方法(將對象添加到ArrayList集合的指定索引處)
int[] arr2 = new int[] { 1,2, 3, 4, 5, 6 };
ArrayList list2 = newArrayList(arr2); //使用聲明的一維數組實例化一個ArrayList對象
list.Insert(3,7); //在ArrayList集合的指定位置添加一個元素
5.2.2 ArrayList元素的刪除
可以使用ArrayList類提供的Clear方法、Remove方法、RemoveAt方法和RemoveRange方法。這幾種方法的使用和5.2.1中元素的添加方法類似,只需要更換方法名即可,所以不再舉例了。
其中,Clear方法用來從ArrayList中移除所有元素;Remove方法從中移除特定對象的第一個匹配項;RemoveAt方法用來移除指定索引處的元素;RemoveRangge方法用來移除一定范圍的元素。大家可視情況而選擇使用。
5.2.3 ArrayList元素的查找
元素的查找也是類似,可使用Contains方法、Indexof方法和LastIndexOf方法。
6. Hashtable(哈希表)
哈希表表示鍵/值對的集合,這些鍵/值對根據鍵的哈希代碼進行組織。
6.1 Hashtable元素的添加
[csharp]
Hashtable hashtable=newHashtable(); hashtable.Add(“Sex”,”男”);
6.2 Hashtable元素的刪除
[csharp]
hashtable.Remove(“Sex”);
6.3 Hashtable元素的遍歷
與數組的遍歷相似,都可以使用foreach語句,但是由於Hashtable元素是一個鍵/值對,因此需要使用DictionaryEntry類型來進行遍歷。
示例代碼:
[csharp]
static void Main(string[] args)
{
Hashtable hashtable = new Hashtable(); //實例化Hashtable對象
hashtable.Add("StuID","110"); //向Hashtable對象添加對象
hashtable.Add("name","Tom");
hashtable.Add("Sex", "男");
Console.WriteLine("\t鍵\t值");
foreach (DictionaryEntry dicEntry inhashtable) //遍歷Hashtable中的元素
{
Console.WriteLine("\t"+dicEntry.Key +"\t"+dicEntry .Value );
}
Console.WriteLine();
Console.ReadLine();
}
運行結果: