1. Main方法(入口)
唯一的四種格式:
static void Main(string[] args)
static void Main()
static int Main(string[] args)
static int Main()
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是基本數據類型。
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重寫。C#中的接口不能聲明常量,接口的屬性只是表示Getter或Setter。
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聲明語法聲明。