C 中的陣列和List

2022-05-10 05:09:36 字數 4347 閱讀 1592

一.陣列的宣告與初始化

型別 陣列名稱 =new 型別 [陣列大小];  //必須使用new初始化

二維陣列:int [ , ] tem=new int [5,6];

c#中,我們在建立二維陣列的時候,一般使用arr的形式,例如

int aint = new

int[2];

但宣告二維陣列還有一種方法,是使用arr[,]的形式。兩者有什麼區別呢?

實際上,形如arr[,]只能宣告等長的二維陣列,例如

int[,] ab1 = new int [2,3];//預設值為0;

int[,] ab2 = new int[2,3],};

形如arr的形式則可以宣告等長二維陣列,也可以宣告不等長二維陣列。例如

int abc = new int[2];

abc[0] = new int;

abc[1] = new int;

如果我們要建立的二維陣列是等長的,我們就可以大膽地使用arr[,]的形式來宣告了!

---------------------

二、用array代替二維陣列

listint>> array = new listint>>();

list

item = new list(new

int );

array.add(item);

item = new list(new

int );

array.add(item);

int m = array[1][2];//

此時的m即為50

list的一般用法

所屬命名空間: system.collections.generic

public class list:ilist,icollection,ienumerable,ilist,icollection,ienumerable

list是arraylist類的泛型等效類,該類使用大小可按需動態增加的陣列實現ilist泛型介面

(1)宣告 listmlist = new list();

eg: string arr = ;

listmlist = new list(arr);

(2)新增乙個元素 list.add(t item)

eg: mlist.add("d");

(3)新增集合元素

eg: string arr2 =;

mlist.addrange(arr2);

(4)在index位置新增乙個元素 insert(int index,t item)

eg: mlist.insert(1,"p");

(5)遍歷list中元素

foreach(t element in mlist) t的型別與mlist宣告時一樣

eg:foreach(string s in mlist)

(6)刪除元素

list.remove(t item) 刪除乙個值

eg: mlist.remove("a");

list.removeat(int index);刪除下標為index的元素

eg: mlist.removeat(0);

list.removerange(int index,int count); 下標index開始,刪除count個元素

eg:mlist.removerange(3,2);

(7)判斷某個元素是否在該list中

list.contains(t item) 返回true或false

eg:if(mlist.contains"("g"))

console.writeline("g存在列表中");

else

mlist.add("g");

(8)給list裡面元素排序 list.sort() 預設是元素每乙個字母按公升序

eg: mlist.sort();

(9)給list裡面元素順序反轉 list.reverse() 可以與list.sort()配合使用

(10)list清空 list.clear()

eg: mlist.clear();

(11)獲得list中元素數目 list.count() 返回int值

eg: mlist.count();

list高階,強大方法

(12)list.findall方法:檢索與指定謂詞所定義的條件相匹配的所有元素

class program

}public class student

public student(){}

public override string tostring()

",name);}}

public class findname

public bool isname(student s)

}(12)list.find方法 搜尋與指定謂詞所定義的條件相匹配的元素,並返回整個list中的第乙個匹配元素

eg://predicate是對方法的委託,如果傳遞給它的物件與委託定義的條件匹配,則該方法返回true,當前list的元素

被逐個傳遞給predicate委託,並在list中間前移動,從第乙個元素開始,到最後乙個元素結束,當找到匹配項

時處理停止

第一種方法 委託給拉姆達表示式:

eg:  

string listfind = mlist.find(name=>

);第二種方法 委託給乙個函式

eg:public bool listfind(string name)

if (name.length > 3)

return true;

return false;

這兩種方法的結果是一樣的

(13) list.findlast方法  public t findlast(predicatematch);確定是否 list 中的每個元素都與指定的謂詞所定義的條件相匹配。用法與list.find相同。

(14) list.trueforall方法:  確定是否 list 中的每個元素都與指定的謂詞所定義的條件相匹配。

public bool trueforall(predicatematch);

(15) list.take(n):  獲得前n行 返回值為ienumetable,t的型別與list的型別一樣

e.g.:

ienumerabletakelist=  mlist.take(5);

foreach (string s in takelist)

console.writeline("element in takelist: " + s);

這時takelist存放的元素就是mlist中的前5個

(16) list.where方法:檢索與指定謂詞所定義的條件相匹配的所有元素。跟list.findall方法類似。

e.g.:

ienumerablewherelist = mlist.where(name =>

if (name.length > 3)

return true;

else

return false;

foreach (string s in sublist)

console.writeline("element in sublist: "+s);

這時sublist儲存的就是所有長度大於3的元素

(17)list.removeall方法:移除與指定的謂詞所定義的條件相匹配的所有元素。

public int removeall(predicatematch);

e.g.:

mlist.removeall(name =>

if (name.length > 3)

return true;

else

return false;

foreach (string s in mlist)

console.writeline("element in mlist:     " + s);

這時mlist儲存的就是移除長度大於3之後的元素。

C 中陣列 ArrayList和List三者的區別

在c 中陣列,arraylist,list都能夠儲存一組物件,那麼這三者到底有什麼樣的區別呢。陣列在c 中最早出現的。在記憶體中是連續儲存的,所以它的索引速度非常快,而且賦值與修改元素也很簡單。csharp view plain copy 陣列 string s new string 2 賦值 s ...

C 中陣列 ArrayList和List三者的區別

在c 中陣列,arraylist,list都能夠儲存一組物件,那麼這三者到底有什麼樣的區別呢。陣列在c 中最早出現的。在記憶體中是連續儲存的,所以它的索引速度非常快,而且賦值與修改元素也很簡單。csharp view plain copy font family simsun font size 1...

C 中陣列 ArrayList和List三者的區別

在c 中陣列,arraylist,list都能夠儲存一組物件,那麼這三者到底有什麼樣的區別呢。陣列陣列在c 中最早出現的。在記憶體中是連續儲存的,所以它的索引速度非常快,而且賦值與修改元素也很簡單。csharp 陣列 string s new string 2 賦值 s 0 a s 1 b 修改 s...