第16章 数组
數(shù)組(Array)是一個存儲相同類型元素的固定大小的順序集合。數(shù)組是用來存儲數(shù)據(jù)的集合,通常認為數(shù)組是一個同一類型變量的集合。
數(shù)組中某個指定的元素是通過索引來訪問的。
所有的數(shù)組都是由連續(xù)的內(nèi)存位置組成的。最低的地址對應第一個元素,最高的地址對應最后一個元素。
聲明數(shù)組
在你的應用程序的變量或字段中,包含的是對數(shù)組的引用,而不是包含數(shù)組本身的元素。
在 C# 中聲明一個數(shù)組,您可以使用下面的語法:
datatype[] arrayName;//聲明一個數(shù)組引用,arrayName變量能指向一個一維數(shù)組。arrayName剛開始被設為null,因為當時還沒有分配數(shù)組。其中,
- datatype 用于指定被存儲在數(shù)組中的元素的類型。
- [ ] 指定數(shù)組的秩(維度)。秩指定數(shù)組的大小。
- arrayName 指定數(shù)組的名稱。
例如:
double[] balance;初始化數(shù)組
聲明一個數(shù)組不會在內(nèi)存中初始化數(shù)組。當初始化數(shù)組變量時,您可以賦值給數(shù)組。
所有數(shù)組類型都隱式地從System.Array抽象類派生,意味著數(shù)組始終為引用類型,是在托管堆上進行內(nèi)存分配的。
所以您需要使用 new 關鍵字來創(chuàng)建數(shù)組的實例。
例如:
double[] balance = new double[10];//分配了含有10個double值的一個數(shù)組,所有double都被初始化為0。由于數(shù)組是引用類型,所以會在托管堆上分配容納10個未裝箱double所需的內(nèi)存塊。
除了數(shù)組元素,數(shù)組對象占據(jù)的內(nèi)存塊還包含一個類型對象指針、一個同步塊索引和一些額外的成員。
該數(shù)組的內(nèi)存塊地址被返回并保存到balance變量中。
賦值給數(shù)組
- 您可以通過使用索引號賦值給一個單獨的數(shù)組元素,比如:
- 您可以在聲明數(shù)組的同時給數(shù)組賦值,比如:
- 您也可以創(chuàng)建并初始化一個數(shù)組,比如:
在上述情況下,你也可以省略數(shù)組的大小,比如:
int [] marks = new int[] { 99, 98, 92, 97, 95};- 您也可以賦值一個數(shù)組變量到另一個目標數(shù)組變量中。在這種情況下,目標和源會指向相同的內(nèi)存位置:
當您創(chuàng)建一個數(shù)組時,C# 編譯器會根據(jù)數(shù)組類型隱式初始化每個數(shù)組元素為一個默認值。例如,int 數(shù)組的所有元素都會被初始化為 0。
訪問數(shù)組元素
元素是通過帶索引的數(shù)組名稱來訪問的。這是通過把元素的索引放置在數(shù)組名稱后的方括號中來實現(xiàn)的。例如:
double salary = balance[9];下面是一個實例,使用上面提到的三個概念,即聲明、賦值、訪問數(shù)組
using System; namespace ArrayApplication {class MyArray{static void Main(string[] args){int [] n = new int[10]; /* n 是一個帶有 10 個整數(shù)的數(shù)組 */int i,j;/* 初始化數(shù)組 n 中的元素 */ for ( i = 0; i < 10; i++ ){n[ i ] = i + 100;}/* 輸出每個數(shù)組元素的值 */for (j = 0; j < 10; j++ ){Console.WriteLine("Element[{0}] = {1}", j, n[j]);}Console.ReadKey();}} }當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結果:
Element[0] = 100 Element[1] = 101 Element[2] = 102 Element[3] = 103 Element[4] = 104 Element[5] = 105 Element[6] = 106 Element[7] = 107 Element[8] = 108 Element[9] = 109使用 foreach 循環(huán)
在前面的實例中,我們使用一個 for 循環(huán)來訪問每個數(shù)組元素。您也可以使用一個 foreach 語句來遍歷數(shù)組。
using System;namespace ArrayApplication {class MyArray{static void Main(string[] args){int [] n = new int[10]; /* n 是一個帶有 10 個整數(shù)的數(shù)組 *//* 初始化數(shù)組 n 中的元素 */ for ( int i = 0; i < 10; i++ ){n[i] = i + 100;}/* 輸出每個數(shù)組元素的值 */foreach (int j in n ){int i = j-100;Console.WriteLine("Element[{0}] = {1}", i, j);}Console.ReadKey();}} }當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結果:
Element[0] = 100 Element[1] = 101 Element[2] = 102 Element[3] = 103 Element[4] = 104 Element[5] = 105 Element[6] = 106 Element[7] = 107 Element[8] = 108 Element[9] = 109C# 數(shù)組細節(jié)
在 C# 中,數(shù)組是非常重要的,且需要了解更多的細節(jié)。下面列出了 C# 程序員必須清楚的一些與數(shù)組相關的重要概念:
| 多維數(shù)組 | C# 支持多維數(shù)組。多維數(shù)組最簡單的形式是二維數(shù)組。string[,] fn = new string[2, 3]; |
| 交錯數(shù)組 | C# 支持交錯數(shù)組,即數(shù)組的數(shù)組。string[][] |
| 傳遞數(shù)組給函數(shù) | 您可以通過指定不帶索引的數(shù)組名稱來給函數(shù)傳遞一個指向數(shù)組的指針。 |
| 參數(shù)數(shù)組 | 這通常用于傳遞未知數(shù)量的參數(shù)給函數(shù)。 |
| Array 類 | 在 System 命名空間中定義,是所有數(shù)組的基類,并提供了各種用于數(shù)組的屬性和方法。 |
轉載于:https://www.cnblogs.com/chrisghb8812/p/5618306.html
總結
- 上一篇: HDU2011 多项式求和
- 下一篇: git切换到远程分支