陣列是乙個無序的元素序列。陣列元素儲存在乙個連續性的記憶體塊中,並可使用乙個整數索引來訪問。
宣告陣列變數時,陣列的大小不是宣告的一部分。
int dogs; // 宣告陣列 // 宣告時不需要指定陣列的大小
只有在實際建立陣列例項的時候,才需要指定陣列的大小。建立陣列例項時編譯器預設將陣列元素初始化為0,null,false(依元素型別不同)。
pins = new int[4]; // 只有在實際建立陣列例項的時候,才需要指定陣列的大小。
以上兩個語句執行後結果如下:
陣列例項的大小不一定是常量,它可以在執行時計算。
int size = int.parse(console.readline());
int pins = new int[size];
某些情況下,陣列大小可能為 0,這個設計是有意義的。大小為 0 的陣列不是乙個 null(空)陣列。除了基本資料型別,陣列元素還可以是結構、列舉或者類。
大括號中的值不一定是常量,它們可以是在執行時計算的值。
random r = new random();
int pins = new int[4];
初始化陣列變數。大括號中的值的數量必須和要建立的陣列例項的大小完全匹配!
int pins = new int[3] ; // 編譯時錯誤
int pins = new int[4] ; // 編譯時錯誤
int pins = new int[4] ; // 正確
初始化乙個陣列變數時,實際上可以省略 new 表示式和陣列的大小,編譯器將根據初始值的數量來計算大小。
int pins = ; // 正確
建立乙個由結構構成的陣列時,為了初始化陣列的每個結構,可以呼叫結構構造器。
struct time
}time schedule = ; // 呼叫自定義的結構構造器
匿名類(anonymous class)是乙個沒有名字的類,只能包含 public 字段,字段必須全部初始化,不可以是 static 字段,而且不能在其中指定方法。
可以建立隱式型別的陣列。如果在宣告陣列的時候指定了乙個初始值列表,就可以讓 c# 編譯器自己推斷陣列中的元素的型別。
var names = new;
// c# 推斷 names 是乙個 string 型別
console.writeline(names[0]);
console.writeline(names[3]);
// 隱式型別轉換的陣列尤其適用於匿名型別
var people = new,
new ,
new ,
new };
// 陣列中的每個元素都是匿名型別
// 並且每個元素都必須指定相同的匿名型別
訪問及遍歷陣列有如下方法,**如下:
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace arraytype
; console.writeline(names[0]);
console.writeline(names[3]);
console.writeline();
console.writeline("用 for 遍歷字串陣列");
for (int i = 0; i < names.length; i++)
// length 是屬性而不是方法,不要加 '()'
console.writeline();
console.writeline("用 foreach 遍歷 string 陣列");
// foreach 是遍歷陣列的首選方式
foreach(string name in names)
var people = new,
new ,
new ,
new };
console.writeline();
console.writeline("用 foreach 遍歷 var 陣列");
foreach(var person in people)
console.writeline();
console.writeline("用 foreach 遍歷 var 陣列");
foreach (var person in people)
, age: ", person.name, person.age);
}console.writeline();}}
}
執行後結果為:
複製陣列有如下方法,但只有最後一種是真正的複製。
int pins = ;
int copy = new int[pins.length];
pins.copyto(copy, 0); // 將陣列 pins 的內容複製到陣列 copy
// copyto 是淺拷貝,從指定位置開始複製,複製後兩個陣列都引用同一組物件
int pins = ;
int copy = new int[pins.length];
array.copy(pins, copy, copy.length); // copy 方法是淺拷貝
int pins = ;
int copy = (int)pins.clone(); // clone 方法是淺拷貝
// clone 放回的是乙個 object,所以必須進行型別準換
int pins = ;
int copy = new int[pins.length];
for (int i = 0; i < copy.length; i++)
陣列的維數是沒有限制的,可以建立多維陣列。
string[,] stars = new string[6,8]; // 建立二維陣列,6 行 8 列
stars[2, 6] = "mars"; // 將單元格(2, 6)的元素設為 mars
// 使用多維陣列時,要準備好捕捉並處理 outofmemoryexception
C 中的陣列(array)
原文 c 中的陣列 array 陣列是乙個無序的元素序列。陣列元素儲存在乙個連續性的記憶體塊中,並可使用乙個整數索引來訪問。c 宣告陣列變數時,陣列的大小不是宣告的一部分。這點與c c 有些區別。int dogs 宣告陣列 宣告時不需要指定陣列的大小只有在實際建立陣列例項的時候,才需要指定陣列的大小...
c 中的array陣列和vector陣列
我覺得實驗一下會記得比較牢,話不多直接上 下面是array陣列,感覺用的不多。cpp 風格陣列 array include include include using namespace std intmain for int i 0 i myint.size i size 獲取長度,vector也...
js 中的陣列Array
1 ecmascript 中的陣列與其他語言中的陣列有些不同,ecmascript中的陣列可以每一項都不同型別,陣列的大小可以動態調整。var colors new array var colors new array 20 var colors new array red blue green v...