> c#中的數組都是由systerm.array類派生而來的引用對象。

# 一維數組表達
用new給數組初始化。
```
int[] arr = new int[3]; // 只定義數組的長度,不定義具體內容,是可行的
```
# 常見錯誤
1. `int arr[] = new int[3];` 錯在[]位置寫錯,應該是int[] arr
2. `int[] arr = new int[3] {1,2 }` 錯在如果定義了數組長度是3,但初始化的時候只有2個數,那么會提示錯誤。
3. `int[] arr = new string[3]` 錯在左邊定義了int類型,右邊又定義了string類型,相沖突。
## 例如:輸入每個月天數 并輸出
```
int[] arr = new int[12] {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 30}
int i; // 用來指代數組第n個數
for(i=0, i<12; i++)
{
console.writeline( (i+1) + "月份為" + arr[i]); //數組編號從0開始,故i編號為0-11. console.write 的表達
}
console.readline();
```


# 二維數組表達
`int [ , ] ` 或` string [] []`
一般用第一種方法
`int[,] arr = new int [2, ]`
因為第二種方法也叫不規則數組,沒法指定列數。否則代碼錯。
CS0178 C# Invalid rank specifier: expected ',' or ']' 無效的秩說明符:應為“,”或“]”
```
int[, ] arr = new int[2, ]; //不指定列數
a[0] = new int[2]; //第0行有2列
a[1] = new int[4]; //第1行有4列
```

數組可以有多維。
## 初始化二維數組
```
int[ , ] arr = {{12,12}, {13,13}, {14,14}}; //這里右邊不能再寫new,否則錯誤
int[ , ] arr = new int[] {{12,12}, {13,13}, {14,14}}; //這樣才對
```

## 數組轉置
比如


```
int[,] arr = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
int i, j;
Console.WriteLine("原始數組");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
Console.Write(arr[i, j] + " ");
}
Console.WriteLine();
}
int temp;
for(i=0;i<3;i++)
{
for(j=0;j<i;j++)
{
temp = arr[i, j];
arr[i, j] = arr[j, i];
arr[j, i] = temp;
}
}
Console.WriteLine("修改后的數組");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
Console.Write(arr[i, j] + " ");
}
Console.WriteLine();
}
Console.ReadLine();
```
# 直接調用systerm.array中的方法
```
int[,] arr = new int[,]{};
console.writeline(arr.length);
```

顯示長度為9


copy
copy to
exists
getlength
getvalue
reverse
setvalue
sort
## 正序排序
Array.Sort(arr);
## 反轉排序
Array.Reverse;
## 倒序排序
Array.Sort(arr);
Array.Reverse;
# foreach 遍歷數組來輸出
```
static void Main(string[] args)
{
int[,] arr = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
int i, j;
Console.WriteLine("原始數組");
foreach (int a in arr) // 這里的a只是我們隨意定義的一個代詞用來表示arr中的元素,也可以是其他名字
{
Console.Write(a + " ");
}
Console.WriteLine("arr's length: "+arr.Length);
Console.ReadLine();
}
```
但這么執行以后,顯示的就不是二維數組而是一維數組。

- 幫助文檔 microsoft helo viewer
- c#開發環境及visual studio安裝注意事項
- c#程序基本結構-基本語法
- Q1: public static void main(String[] args) 是什么意思
- Q2: c#命名空間+Main方法
- Q3:注釋+命名規則+代碼規則
- Q4: c#語句 system => console
- Q5: 數據類型 .net
- Q5: 常用名字、變量、運算符
- Q6: 對話窗輸入-屬性
- Q7: 遞歸
- Q8:決策分支、條件判斷語句 if 語句
- Q9:數組
- Q10:字符串
- Q11:對象、類、訪問權限、靜態動態函數
- Q12:方法及參數——繼承于類
- Q13:構造函數
- Q14:繼承——base 關鍵字
- Q15:多態、虛方法、接口
- Q16:創建窗體應用、控件
- Q17:Ado數據訪問、連接 sqlserver 數據庫
- Q18: 讀取數據command + DataRead( )、DataSet + DateAdapter
- Q19: Entity Framwork、entity 與 ADO.net的區別
- Q20: 對話框、文件、文件夾
- Q21: 導入excel數據、更新到 dbo 數據庫中
- Q26: 獲取 excel 中每個 sheet 的表名
- Q22: 兩個窗體之間數據+方法傳遞
- Q23: 數學對象
- Q24: c#網站編寫
- Q25: visual studio2017如何查看幫助
- Q27: c# dictionary 字典對象
- Q28: 數組與dataTable互相轉化