C# Array 陣列- 教學筆記(使用visual studio) - 關於網路那些事...
文章推薦指數: 80 %
C#提供了許多預設class可以用來儲存資料,其中一個就是array陣列陣列可以 ... 例如: int[,] x= new int[4,3]; 建立一個二維、 4x3的array 等同: int[ ...
C#Array陣列-教學筆記(使用visualstudio)
C#Array陣列-教學筆記(使用visualstudio)
December6,2016
PostedBy
AdamOu-Yang
Array陣列
C#提供了許多預設class可以用來儲存資料,其中一個就是array陣列
陣列可以用來儲存多組資料。
在應用於文章、使用者資料、權限管理等介面時,可以先將值儲存成陣列,再透過迴圈的方式一個一個取出來。
(迴圈的用法將會在後續提到)
在這裡,會用比較簡潔易懂的方式來解說,
建議可以先從本篇理解陣列用法,再前往官網參考手冊參考更仔細的寫法
一維陣列
在C#中的陣列,是用資料型別+大刮號[]來宣告,並且可在括號中填寫陣列size
範例:
//新增陣列address,並在大括號設定可容納五個元素
int[5]address;
//指定陣列userid,但不限定容量
int[]userid;
在資料結構方面,仍繼承了C語言的寫法,會從0開始累算
也就是第一筆資料,會存放在userid[0]
範例:
int[3]userid;
userid[0]=100334;
userid[1]=100342;
userid[2]=100321;
在C#還提供另外一種比較便利的寫法,讓我們可以很輕鬆的定義陣列內容
string[]formdata={"年齡","性別","身高","體重","備註"};
Console.WriteLine(formdata[3]);//結果:體重
二維陣列
如果在一維陣列要再新增第二維,只要加一個逗號(,)表示之
當然,也可以在新增時定義各維度的sizetype[,,…]array名稱=newtype[size1,size2,size3…]
例如:int[,]x=newint[4,3];建立一個二維、4x3的array
等同:int[,]x={{2,3,2},{5,6,1},{4,6,2},{4,6,3}};
ing[,]formdata
取出資料也是依照相同的模式
(注意!這樣的寫法,要留意資料結構必須對稱)
例如,取出第一維[0]第二維[1]位置的值
formdata[0,1](注意!不是用formdata[0][1])
範例:
int[,]formdata={
{1,2},
{3,4},
{5,6},
{7,9}
};
Console.WriteLine(formdata[0,1]);//結果:2
三維陣列
如果在二維陣列要再新增第三維,只要加兩個逗號(,,)表示之(以此類推…)
(注意!這樣的寫法,要留意資料結構必須對稱)
string[,,]user
接下來,取出資料同樣依照相同方式
例如,取出第一維[1]第二維[0]第三維[1]的資料
user[1,0,1]
範例
string[,,]user={
{
{"a1","b1"},
{"c1","d1"},
{"e1","f1"},
{"g1","h1"}
},
{
{"a2","b2"},
{"c2","d2"},
{"e2","f2"},
{"g2","h2"}
}
};
Console.WriteLine(user[1,0,1]);//結果:b2
不規則(不對稱)陣列(JaggedArrays)
前面提到的多維陣列寫法,內容架構必須對稱
例如:
int[,]formdata={
{1,1},
{1,1},
{1,1}
};
如果需要跳脫這樣的規則,就可以使用不規則陣列JaggedArrays
JaggedArrays的主要差別在於:他陣列中的元素也是array(陣列中的陣列)
定義方式如下:
int[][]numbers
定義完成之後,指派內容時,要在new一次陣列,這時就可以在新的陣列中存取任意長度值
int[][]numbers={
newint[]{1,2},
newint[]{3,4,5,6,7,8,9},
newint[]{10,11}
};
Console.WriteLine(numbers[1][2]);//結果:5
當然,你可以混和這兩種方式來建構陣列,
但通常不建議這麼做,除非真的沒有其他辦法
範例:
int[][,]numbers={
newint[,]{{1,2},{3,4}},
newint[,]{{5,6},{7,8},{9,10},{11,12},{13,14}},
newint[,]{{15,16},{17,18},{19,20}}
};
Console.WriteLine(numbers[1][3,0]);
##陣列屬性
Array.Length取得陣列資料長度
在程式開發時,時常會需要取得陣列長度
可以直接使用.Length方法來取得
範例:
int[]num={1,2,3,4,5,6,7};
Console.WriteLine(num.Length);
Array.Rank取得陣列維度值
藉由Rank可以返回陣列的維度值,例如:四維陣列,就會返回4
範例:
int[,,,]dim=newint[2,5,3,7];
Console.WriteLine(dim.Rank);//結果4
int[]num={{{5,6},{7,8}},{{5,6},{7,8}},{{5,6},{7,8}}};
Console.WriteLine(num.Rank);//結果3
Array.Max,Array.Min,Array.Sum
藉由Max可以取得陣列的最大值、Min可以取得陣列的最小值、Sum可以取得總和
範例:
int[]ary={3,5,6,2};
Console.WriteLine(ary.Max());
//Outputs6
Console.WriteLine(ary.Min());
//Outputs2
Console.WriteLine(ary.Sum());
//Outputs16
進階用法
底下記錄一些常會用到的技巧
將持續更新
(如果對於陣列資料有更多的操作,例如新增、刪除..,建議使用List來處理)
Array.Sort排序
藉由Sort來對陣列內容排序,可接受數值、字串排序
string[]datas={"About","Name","One","All"};
Array.Sort(datas);
foreach(variindatas)
{
Console.WriteLine(i);
}
將陣列內容轉換成小寫
透過ConvertAll處理所有值,並且在返回的過程一一轉換成小寫
string[]datas={"About","Name","One"};
varlowerTreat=Array.ConvertAll(datas,(v)=>{returnv.ToLower();});
Console.WriteLine(lowerTreat[1]);
搜尋
搜尋陣列內容
藉由FindAll並且在返回過程檢查字首為A的字串
string[]datas={"About","Name","One","All"};
varsearchData=Array.FindAll(datas,(v)=>{returnv.StartsWith("A");});
foreach(variinsearchData)
{
Console.WriteLine(i);
}
<
延伸文章資訊
- 1C# Array Examples, String Arrays - Dot Net Perls
Create and loop over a string array. Access array Length and get elements at indexes.
- 2C# - Arrays - Tutorialspoint
int [] marks = new int[] { 99, 98, 92, 97, 95}; int[] score = marks;. When you create an array, C...
- 3Learn C#: Arrays and Loops Cheatsheet - Codecademy
In C#, one way an array can be declared and initialized at the same time is by assigning the newl...
- 4C# Array 陣列- 教學筆記(使用visual studio) - 關於網路那些事...
C#提供了許多預設class可以用來儲存資料,其中一個就是array陣列陣列可以 ... 例如: int[,] x= new int[4,3]; 建立一個二維、 4x3的array 等同: in...
- 5Day17-C#陣列Array、不規則陣列。神啊 - iT 邦幫忙
C#陣列簡介. 1.陣列Array是多個相同資料型別的變數,在記憶體中連續串在一起的物件,需用new進行建立物件及宣告 2.宣告時由於是要跟電腦要一串連續的記憶體空間,陣列 ...