您好,登錄后才能下訂單哦!
無論哪種語言,肯定會有集合的概念。而最簡單,最直觀的集合應該就是數組了,數組是在內存中連續的一段空間。看看C#中數組
的定義。
1、int[] intArry ;
intArry= new int[6];
這里聲明了一個int數組類型變量intArry,并保存一個具有6個單元的int數組對象;
int[,] intArry2 = new int[3, 4];
聲明一個int二維數組類型變量,并初始化一個3行4列的數組對象;
int[][] intArry3 = new int[9][];
聲明一個數組單元為int數組類型的數組變量,每個數組元素是一個int數組類型的對象引用。
因為是面向對象語言,上面提到了引用和對象。其實:
1、.net Frameword數組不是一種單純的數據結構,而是一個類型,叫數組類型;
2、.net Framework中的數組變量保存著引用到數組類型對象的引用,也就是說數組是一個對象。
所有.net Framework數組(int[],string[],object[])都是從Array繼承的子類。一般不直接使用Array類,因為.net Framework下
的各類語言,當然也包括C#,將數組對象映射為各自的特殊語法了,比如int[],string[]。
數組主要有兩個各屬性:索引和長度,也就是index和length,索引用于訪問數組對象中的元素,長度也就是數組的長度。
看一段聯系代碼:
public class MyArray { /// <summary> /// 定義數組測試 /// </summary> public void TestInt() { int[] intArry1 = null; intArry1 = new int[6]; int[,] intArry2 = new int[3, 4]; int[][] intArry3 = new int[9][]; } /// <summary> /// 值類型數組轉引用類型數組測試 /// </summary> /// <param name="array"></param> /// <returns></returns> 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; } /// <summary> /// 數組的主要特性測試 /// </summary> public static void MainTest() { //聲明一個包含是個元素的字符串型數組 string[] sArray = new string[10]; //訪問數組 //賦值 for (int i = 0; i < sArray.Length; i++) { sArray[i] = @"string" + i; } ConsoleToClientString(sArray); //另一種方式聲明數組,所謂的枚舉法 sArray = new string[] { "TestString0", "TestString1", "TestString2" }; ConsoleToClientString(sArray); //數組復制 string[] newSArray = sArray.Clone() as string[]; ConsoleToClientString(newSArray); //使用Array的CreateInstance方法聲明10元素的×××數組 int[] intArray = Array.CreateInstance(typeof(int), 10) as int[]; for (int i = 0; i < intArray.Length; i++) { intArray[i] = i; } ConsoleToClientInt(intArray); //數組之間的復制,指定位置,指定長度 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); //數組的數組 int[][] intArrayArray = new int[9][]; Console.WriteLine("數組長度:" + 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); //二維數組 int[,] intArray2D = new int[9, 9]; Console.WriteLine(string.Format("二維數組 長度:{0},維數:{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(); } }
調用
class Program { static void Main(string[] args) { MyArray.MainTest(); Console.ReadLine(); } }
結果
由上可以知道:
數組有引用類型數組和值類型數組,對于引用類型數組,元素用于保存對象的引用,初始化值為null;對于值類型數組,元素保存
對象的值,對于數字類型初始化值為0。
數組有維度,但是多維數組和數組的數組是不同的概念,intArrayArray和intArray2D是不同的。數組的數組表示一個m*n的行列式
,多維數組則是每個元素都是一個數組對象的數組。
數組和其他集合類一樣都是是實現了ICollection接口,都具有枚舉和迭代功能。
代碼下載:http://download.csdn.net/detail/yysyangyangyangshan/4640445
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。