1. Main方法(入口)
唯一的四種格式:
static voidMain(string[] args)
static voidMain()
static intMain(string[] args)
static intMain()
C#中一個項目只允許一個Main入口,且大寫!
Main方法傳回值只為void or int 前面沒有修飾符
2. 資料類型方面。
a) C#定義了struct(結構),不能是抽象的,也不能被繼承,是實值型別的。
b) C#沒有基本類型的概念,全部是物件導向的類型,int是Int32的簡寫。
c) 在Java中const是保留字,final與C#中的const意思相同,C#中還有readonly允許運行時賦初值。
d) 字串比較,C#中可以用=比較值,與Java一樣用StringBuffer來減少記憶體開銷。
e) Java中String是引用資料類型,C#中string是基礎資料型別 (Elementary Data Type)。
3. 運算子方面
C#增加了Checked和Unchecked以繞過編譯錯誤。比如“把一個long付給int32 ,如果高32為零,則不會出錯,否則會有溢出錯誤,unchekced就是告訴編譯器不要去管溢出,盡你可能轉化”
4. 分支語句方面
在Java中goto是保留字。C#中switch中的case不會順序執行,末尾必須有break或者goto關鍵字;java中不用。同時case中的資料類型不僅支援int和char,還支援其它資料類型。
5. 屬性:
java中定義和訪問均要用get和set方法,可以不成對出現。
c#中是真正的屬性,定義時get和set必須同時出現,訪問時用.號即可。不用get,set。
6. 數組:
int[] x = { 0, 1, 2, 3 };
int x[] = { 0, 1, 2, 3 };
但在C#中,只有第一行代碼合法,[]不能放到變數名字之後。
7. 在Java中,包的名字同時也是實際存在的實體,它決定了放置.java檔案的目錄結構。在C#中,物理的包和邏輯的名稱之間是完全分離的
.NET中包的實體稱為程式集(Assembly)。每一個程式集包含一個manifest結構。manifest列舉程式集所包含的檔案,控制哪些類型和資源被顯露到程式集之外,並把對這些類型和資源的引用映射到包含這些類型與資源的檔案。程式集是自包含的,一個程式集可以放置到單一的檔案之內,也可以分割成多個檔案。.NET的這種封裝機制解決了DLL檔案所面臨的問題,即臭名昭著的DLL Hell問題。
8. 存取修飾詞方面:
C#中的存取修飾詞與Java中的基本對應,但多出了一個internal。簡而言之,C#有5種類型的可訪問性,如下所示:
public:成員可以從任何代碼訪問。
protected:成員只能從衍生類別訪問。
internal:成員只能從同一程式集的內部訪問。
protected internal:成員只能從同一程式集內的衍生類別訪問。
private:成員只能在當前類的內部訪問。
9. 由於C#中不存在final關鍵詞,如果想要某個類不再被派生,你可以使用sealed關鍵詞
10. 繼承方面:
C#增加了base關鍵字以指向父類。C#中父類方法中具有virtual關鍵字的才可以被子類重寫,重寫時還需要聲明override。與抽象類別相同,abstract關鍵字也必須被override重寫。
11. 運算子多載
Java中無。運算子多載必須為類的靜態方法,重載==,其他判斷操作也必許重載。
12. C#增加了索引器,可以象訪問數組一樣訪問類或結構。
13. 與Java不同,C#中的介面不能包含域(Field)。
另外還要注意,在C#中,介面內的所有方法預設都是公用方法。在Java中,方法聲明可以帶有public修飾符(即使這並非必要),但在C#中,顯式為介面的方法指定public修飾符是非法的。
14. 異常方面
與Java非常相似,只是沒有throws關鍵字,無須截獲異常(當然要在程式主入口去截)。
15. 方法方面
與Java相同,只有基本類型通過值傳遞,其他都是傳遞引用。不過C#也可以以引用的方式傳遞基本類型,利用ref關鍵字。而out關鍵字有些類似於Oracle預存程序,與ref的區別在於:方法忽略out參數初始值,方法必須為out參數賦值。
16. 在C#中也可以直接使用指標,開闢或者回收記憶體,只是要使用兩個關鍵字unsafe和fixed。
17. 委託
委託(delegate)可以看作C++或者其他語言中的函數指標
委託用來封裝可調用方法。你可以在類裡面編寫方法並在該方法上建立委託,此後這個委託就可以被傳遞到第二個方法。這樣,第二個方法就可以調用第一個方法。
委託是從公用基類System.Delegate派生的參考型別。定義和使用委託包括三個步驟:聲明,建立執行個體,調用。委託用delegate聲明文法聲明。