C#

  • 613
  • 0
  • C#
  • 2018-05-12

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.運算式

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 程式設計經典