C#基礎知識整理:基礎知識(14) 數組

來源:互聯網
上載者:User
無論哪種語言,肯定會有集合的概念。而最簡單,最直觀的集合應該就是數組了,數組是在記憶體中連續的一段空間。看看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介面,都具有枚舉和迭代功能。

以上就是C#基礎知識整理:基礎知識(14) 數組的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.