最近在學習c#,由於之前學習了c++,發現在c#與c++在陣列的操作中有較大的不同,所以總結一下加深記憶。
例如宣告乙個一維的int陣列:
int number;
宣告乙個二維int陣列:
int [,]tnumber;
宣告乙個三維陣列(以此類推):
int [,,] snumber;
隨後建立陣列:
number=new int [4];
tnumber=new int [4,6]
snumber=new int [4,5,6];
不像c++中使用int number [4] 。
可以在陣列建立時使用列表初始化,如:
int number=new int [4];//大括號內的值也可以不是常量,可以是執行時計算的值
建立隱式型別的陣列:var names=new ;//保證都是相同的值型別
陣列中定義了length屬性,表示陣列中元素的個數。
除了使用傳統的for迴圈來遍歷陣列外,還可以使用foreach來遍歷陣列。
例項如下:
int pins=new int[4];
foreach(int pin in pins)
有以下
注意事項:
foreach總是遍歷整個陣列,並且順序固定;
最重要的是:如果要改變陣列元素的值,必須使用for迴圈,因為foreach中用於遍歷的變數是每個陣列元素的唯讀拷貝。
c++中不能返回乙個陣列,但c#中可以。
例子如下:
public int getdata()
陣列是引用型別,如下的例子兩個陣列引用同乙個記憶體
int pins=new int [4];
int copy=pins;//兩個陣列引用同乙個記憶體,對copy進行的操作也會在pins中體現出來
system.array類提供了一下方法用於複製陣列:
例子如下:
int pins=new int [4];
int copy=new int [pins.length];
pins.copyto(copy,0)//第二個引數表示複製時的起始位置
為了減少不必要的空間浪費,c#中可以建立交錯陣列,交錯陣列每一列的長度可以不相等。
例子如下:
int items=new int [4];
int column0=new int [3];
int column1=new int [5];
int column2=new int [10];
int column3=new int [15];
items[0]=column0;
items[1]=column1;
items[2]=column2;
items[3]=column3;
如果乙個方法需要獲取任意數量、任意型別的引數,就可以考慮使用引數陣列,關鍵字為params
例子如下:
//輸入任意數量的整數,從中找到最小值
public int min(params int pins]
{int min;
min =pins[0];
foreach(int pin in pins)
{if (pin若要接收任意型別的引數,則使用params object。
使用params需注意:
params只能用於一維陣列。
是否有params關鍵字不能區分兩個方法。
不能為引數陣列使用ref或out關鍵字。
引數陣列必須是方法的最後一項引數
c 陣列簡單知識補充
陣列是引用型別,不論其元素是值型別還是引用型別。c 中陣列物件實現的各個介面 定義了淺拷貝的能力,因此陣列可以進行淺拷貝 system.icloneable icollection介面的子代,使用介面程式設計減輕耦合,該介面只定義了一些方法,有索引器,查詢元素位置,插入資料,移除索引位置資料這個方法...
陣列的簡單知識
陣列 要想定義多個重複型別的變數,那麼使用陣列是乙個很好的方法,乙個陣列裡面存放的資料的型別必須是一樣的。即同乙個資料型別。一維陣列 定義格式 資料型別 陣列名 null 陣列名 new 資料型別 長度 可以合併資料型別 陣列名 new 資料型別 長度 或者 資料型別 陣列名 int sore nu...
C 陣列知識總結
是一種資料型別,可儲存一組資料 語法 資料型別 陣列名 宣告型別 int score 儲存成績,整型 int height 儲存高度,浮點型 int name 儲存姓名,字串型 一旦宣告了陣列的大小,就不能修改 語法 陣列名 new 資料型別 陣列長度 在宣告陣列時便分配陣列空間的兩種方法 法1 資...