新聞中心
無(wú)論哪種語(yǔ)言,肯定會(huì)有集合的概念。而最簡(jiǎn)單,最直觀的集合應(yīng)該就是數(shù)組了,數(shù)組是在內(nèi)存中連續(xù)的一段空間??纯碈#中數(shù)組
的定義。
1、int[] intArry ;
intArry= new int[6];
這里聲明了一個(gè)int數(shù)組類型變量intArry,并保存一個(gè)具有6個(gè)單元的int數(shù)組對(duì)象;
int[,] intArry2 = new int[3, 4];
聲明一個(gè)int二維數(shù)組類型變量,并初始化一個(gè)3行4列的數(shù)組對(duì)象;
int[][] intArry3 = new int[9][];
聲明一個(gè)數(shù)組單元為int數(shù)組類型的數(shù)組變量,每個(gè)數(shù)組元素是一個(gè)int數(shù)組類型的對(duì)象引用。
因?yàn)槭敲嫦驅(qū)ο笳Z(yǔ)言,上面提到了引用和對(duì)象。其實(shí):
1、.net Frameword數(shù)組不是一種單純的數(shù)據(jù)結(jié)構(gòu),而是一個(gè)類型,叫數(shù)組類型;
2、.net Framework中的數(shù)組變量保存著引用到數(shù)組類型對(duì)象的引用,也就是說(shuō)數(shù)組是一個(gè)對(duì)象。
所有.net Framework數(shù)組(int[],string[],object[])都是從Array繼承的子類。一般不直接使用Array類,因?yàn)?net Framework下
的各類語(yǔ)言,當(dāng)然也包括C#,將數(shù)組對(duì)象映射為各自的特殊語(yǔ)法了,比如int[],string[]。
數(shù)組主要有兩個(gè)各屬性:索引和長(zhǎng)度,也就是index和length,索引用于訪問(wèn)數(shù)組對(duì)象中的元素,長(zhǎng)度也就是數(shù)組的長(zhǎng)度。
看一段聯(lián)系代碼:
public class MyArray { ////// 定義數(shù)組測(cè)試 /// public void TestInt() { int[] intArry1 = null; intArry1 = new int[6]; int[,] intArry2 = new int[3, 4]; int[][] intArry3 = new int[9][]; } ////// 值類型數(shù)組轉(zhuǎn)引用類型數(shù)組測(cè)試 /// /// ///public static object[] Int32ToArrayOfObject(int[] array) { object[] objArray = new object[array.Length]; for (int i = 0; i < array.Length; i++) { objArray[i] = array[i]; } return objArray; } /// /// 數(shù)組的主要特性測(cè)試 /// public static void MainTest() { //聲明一個(gè)包含是個(gè)元素的字符串型數(shù)組 string[] sArray = new string[10]; //訪問(wèn)數(shù)組 //賦值 for (int i = 0; i < sArray.Length; i++) { sArray[i] = @"string" + i; } ConsoleToClientString(sArray); //另一種方式聲明數(shù)組,所謂的枚舉法 sArray = new string[] { "TestString0", "TestString1", "TestString2" }; ConsoleToClientString(sArray); //數(shù)組復(fù)制 string[] newSArray = sArray.Clone() as string[]; ConsoleToClientString(newSArray); //使用Array的CreateInstance方法聲明10元素的×××數(shù)組 int[] intArray = Array.CreateInstance(typeof(int), 10) as int[]; for (int i = 0; i < intArray.Length; i++) { intArray[i] = i; } ConsoleToClientInt(intArray); //數(shù)組之間的復(fù)制,指定位置,指定長(zhǎng)度 int[] newIntArray = new int[20]; Array.Copy(intArray, 3, newIntArray, 4, intArray.Length - 3); ConsoleToClientInt(newIntArray); object[] objArray = sArray; ConsoleToClientObject(objArray); objArray = Int32ToArrayOfObject(intArray); ConsoleToClientObject(objArray); //數(shù)組的數(shù)組 int[][] intArrayArray = new int[9][]; Console.WriteLine("數(shù)組長(zhǎng)度:" + intArrayArray.Length); //賦值 for (int i = 1; i < 10; i++) { intArrayArray[i - 1] = new int[i]; for (int j = 1; j <= i; j++) { intArrayArray[i - 1][j - 1] = i * j; } } ConsoleToClientArrayArrayInt(intArrayArray); //二維數(shù)組 int[,] intArray2D = new int[9, 9]; Console.WriteLine(string.Format("二維數(shù)組 長(zhǎng)度:{0},維數(shù):{1}*{2}", intArray2D.Length, intArray2D.GetLength(0), intArray2D.GetLength(1))); for (int i = 1; i < 10; i++) { for (int j = 1; j <= i; j++) { intArray2D[i - 1, j - 1] = i * j; } } int count = 0; foreach (int item in intArray2D) { if (item > 0) { Console.Write("{0,2}", item); } if (++count >= 9) { Console.WriteLine(); count = 0; } } } static void ConsoleToClientArrayArrayInt(int[][] intArrayArray) { foreach (int[] item1 in intArrayArray) { foreach (int item2 in item1) { Console.Write("{0,2}", item2); } Console.WriteLine(); } Console.WriteLine(); } static void ConsoleToClientString(string[] sArray) { foreach (string item in sArray) { Console.Write(item + @","); } Console.WriteLine(); } static void ConsoleToClientInt(int[] intArray) { foreach (int item in intArray) { Console.Write(item + @","); } Console.WriteLine(); } static void ConsoleToClientObject(object[] objArray) { foreach (object item in objArray) { Console.Write(item.ToString() + @","); } Console.WriteLine(); } }
調(diào)用
class Program { static void Main(string[] args) { MyArray.MainTest(); Console.ReadLine(); } }
結(jié)果
由上可以知道:
數(shù)組有引用類型數(shù)組和值類型數(shù)組,對(duì)于引用類型數(shù)組,元素用于保存對(duì)象的引用,初始化值為null;對(duì)于值類型數(shù)組,元素保存
對(duì)象的值,對(duì)于數(shù)字類型初始化值為0。
數(shù)組有維度,但是多維數(shù)組和數(shù)組的數(shù)組是不同的概念,intArrayArray和intArray2D是不同的。數(shù)組的數(shù)組表示一個(gè)m*n的行列式
,多維數(shù)組則是每個(gè)元素都是一個(gè)數(shù)組對(duì)象的數(shù)組。
數(shù)組和其他集合類一樣都是是實(shí)現(xiàn)了ICollection接口,都具有枚舉和迭代功能。
代碼下載:http://download.csdn.net/detail/yysyangyangyangshan/4640445
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買多久送多久。
網(wǎng)站題目:C#基礎(chǔ)知識(shí)整理:基礎(chǔ)知識(shí)(14)數(shù)組-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://www.dlmjj.cn/article/dshgid.html