一.陣列的宣告與初始化
型別 陣列名稱 =new 型別 [陣列大小]; //必須使用new初始化
二維陣列:int [ , ] tem=new int [5,6];
c#中,我們在建立二維陣列的時候,一般使用arr的形式,例如
int aint = newint[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...