Java與C#區別

來源:互聯網
上載者:User

Java與C#區別

1.         源檔案方面。C#可以在一個.cs 檔案中。出現多個name sapce(命名空間,有些類似於pacakage),並定義多個類。C#包含有預先處理指令。

2.         資料類型方面。
a)         C#定義了struct(結構),不能是抽象的,也不能被繼承,是實值型別的。
b)        C#沒有基本類型的概念,全部是物件導向的類型,int是Int32的簡寫。
c)        在Java中const是保留字,final與C#中的const意思相同,C#中還有readonly允許運行時賦初值。
d)        字串比較,C#中可以用=比較值,與Java一樣用StringBuffer來減少記憶體開銷。

3.        運算子方面。C#增加了Checked和Unchecked以繞過編譯錯誤。比如“把一個long付給int32 ,如果高32為零 則不會出錯,否則會有溢出錯誤,unchekced就是告訴編譯器不要去管溢出,盡你可能轉化”

4.        分支語句方面。在Java中goto是保留字。C#中switch中的case不會順序執行,末尾必須有break或者goto關鍵字。

5.        迴圈語句好像沒有什麼不同的。

6.        存取修飾詞方面。在範圍放main,C#增加了internal和protected internal,前者表示只能從當前程式集內可見,即可以在編譯時間可Assembly的DLL或EXE,類似於JAR;後者表示對當前程式集或者從此包含類繼承的類可見。Sealed相當於Java中的final關鍵字。

7.        方法方面。與Java相同,只有基本類型通過值傳遞,其他都是傳遞引用。不過C#也可以以引用的方式傳遞基本類型,利用ref關鍵字。而out關鍵字有些類似於Oracle預存程序,與ref的區別在於:方法忽略out參數初始值,方法必須為out參數賦值。

8.        屬性方面。Getter和Setter的寫法不太一樣。

9.        繼承方面。C#增加了base關鍵字以指向父類。C#中父類方法中具有virtual關鍵字的才可以被子類重寫,重寫時還需要聲明override。與抽象類別相同,abstract關鍵字也必須被override重寫。C#中的介面不能聲明常量,介面的屬性只是表示Getter或Setter。

10.     事件。Java中沒有(Java通過實現自訂接聽程式類執行事件)。C#定義了類似於函數指標的委託來實現事件。

11.     運算子多載。Java中無。運算子多載必須為類的靜態方法,重載==,其他判等操作也必許重載。

12.     異常方面。與Java非常相似,只是沒有throws關鍵字,無須截獲異常(當然要在程式主入口去截)。

13.     C#增加了索引器,可以象訪問數組一樣訪問類或結構。個人感覺就是少些幾個字而已,還造成一定的困擾。

14.     C#的Attribute要比Java的Annotation強很多。不過加上AOP後,這種動態功能Java也不錯了。

15.     在C#中也可以直接使用指標,開闢或者回收記憶體,只是要使用兩個關鍵字unsafe和fixed。

原文地址

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.