C#
1. C#
- C# 是物件導向的語言
- 支援「元件導向」程式設計,含有屬性、方法和事件的程式設計模型
- 「記憶體回收」自動取回不可能執行到且未使用的物件所佔用的記憶體
- 「例外狀況處理」針對錯誤偵測及復原提供結構化且可延伸的方法
- 「型別安全」的設計
2. 程式結構
- C# 語言的重要組織概念如下:程式、命名空間、型別、成員及組件。
- 組件通常具有副檔名
.exe
或.dll
- 執行前,組件中的 IL 程式碼會由 .NET 通用語言執行平台的 Just-In-Time (JIT) 編譯器自動轉換為處理器特定程式碼。
3..NET程式建構及執行步驟
- C# -> Compile (csc.exe) -> 建置出組件(.dll 、.exe) -> CLR <JIM ( just in Time ) -> 原始碼>
3.C#型別和變數
- C# 中有兩種型別:實值型別 (簡單型別、列舉型別、結構型別、可為 Null 的實值型別) 和參考型別 (類別型別、介面型別、陣列型別、委派型別)。
- 變數表示儲存位置,每個變數都有一種型別,其決定哪些值可以儲存在變數中
實質型別 | 參考型別 |
Stack | Heap |
快、量小 | 慢、量大 |
簡單型別、列舉型別、結構型別 | 類別型別、介面型別、陣列型別、委派型別 |
4.運算式
- 網址: Microsoft C#
5.陳述式
- 「宣告陳述式」可用來宣告區域變數和常數。
- 「運算式陳述式」可用來評估運算式。
- 「選取範圍陳述式」可用來選取一些可能陳述式的其中之一,以根據某個運算式的值來執行。 ex: if、switch
- 「反覆運算陳述式」可用來重複執行內嵌的陳述式。 ex: for loop
- 「跳躍陳述式」可用來轉移控制項。 ex: break
try
...catch
陳述式可用來攔截在執行區塊時發生的例外狀況。using
陳述式可用來取得資源、執行陳述式,然後處置該資源。
6.類別與結構
- 類別是以單一單位結合狀態 (欄位) 和動作 (方法及其他函式成員) 的資料結構。 (類別宣告 -> 類別建立
new
->系統自動回收) - 結構是可包含資料成員和函式成員的資料結構,直接儲存結構的資料,結構的指派和實值參數傳遞會比參考型別耗用更多資源。
Class [Reference Type]
public class PointExample
{
public static void Main()
{
Point[] points = new Point[100];
for (int i = 0; i < 100; i++)
points[i] = new Point(i, i);
}
}
Struct (使用者自訂型別,將不同型別的資料放在一起構成一筆結構) [Value Type]
struct Point
{
public int x, y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
}
類別(Class) | 結構(Struck) |
參考型別 | 實質型別 |
Heap | Stock |
new |
不需 new |
可為空 | 至少一個欄位 |
可被繼承 | 不可被繼承 |
較有效率 | 耗用資源 |
7.陣列
- 陣列是一種資料結構,包含的變數 (也稱為陣列的元素) 屬於相同的型別,
- 指定新陣列執行個體的長度,是固定的。
8.介面
- 「介面」定義可由類別和結構實作的合約。
- 介面可以包含方法、屬性、事件和索引子。
- 介面定義之成員,不提供實作。
- 介面可以採用「多重繼承」。
9.列舉enum [Value Type]
- 「列舉型別」,一種資料型態,將一組無意義的資料用有意義的方式表達出來。
- 成員值宣告會指定整數型別。
- 任何
enum
型別的預設值都是轉換成enum
型別的整數值零。 - 無法繼承
- 只可使用在命名空間,不可以在方法內宣告
enum Alignment: sbyte
{
Left = -1,
Center = 0,
Right = 1
}
int i = (int)Alignment.Left ; // int i = -1;
Alignment c = (Alignment)-1; // Alignment c = Alignment.Left;
10.委派
- 「委派型別」代表對方法的參考,其中含有特定參數清單與傳回型別。
- 只可在類別或命名空間定義委派型別。
- 透過Invoke呼叫。
同時可呼叫多個方法。
class Program
{
delegate void FindResult(double x,double y);
static void Main (string[] args)
{
FindResult compute=null;
compute += new FindResult (Add);
compute.Invoke(1.5,2.4);
}
static void Add(double i,double j)
{
Console.WriteLine("{0}+{1}={2}",i,j,i+j);
}
}
11.屬性 (放置Heap區)
- 程式是透過定義和使用屬性指定這項額外的宣告式資訊。
12.Static (靜態)
- 類別內宣告的靜態變數,此變數「生命週期」是到程式停止執行為止 (全域變數)。
- 不需要new 建立實體,即可使用。
- 靜態變數無法在方法內宣告。
- 靜態方法中只能使用靜態變數。
參考網址: Microsoft C#
Visual Studio C# . net 程式設計經典