作者:Jaskey Lam
鏈接:https://www.zhihu.com/question/20451584/answer/30195966
來源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
以下手工翻譯自stackoverflow,由于只是大學(xué)學(xué)過C#,大部分時(shí)間都是寫Java,所以只翻譯部分能看懂的回答。
泛型不一樣,Java泛型只是編譯時(shí)的,但C#的泛型在運(yùn)行時(shí)也被維持,而且適用于value types 和 reference types
C# 沒有 checked exceptions
Java 不允許建立user-defined 的value types
Java 不允許運(yùn)算符重載
Java 沒有類似LINQ的特性
Java 不支持委托
C# 沒有匿名內(nèi)部類
C#沒有像java 那樣的內(nèi)部類,所有的nested classes 其實(shí)都像Java 的靜態(tài)nested classses
Java 沒有靜態(tài)類
Java 沒有 擴(kuò)展方法(extension methods)
兩者的訪問修飾符有一定區(qū)別
兩者初始化(initialization)的順序有一定不同。C#初始化變量后才調(diào)用父類的構(gòu)造方法
Java 沒有類似“properties”的東西,而是約定俗成為getter 和setter
Java 沒有類似與"unsafe"的特性
兩者的枚舉(enums)有一定的不同,Java的更加面向?qū)ο?/p>
Java的參數(shù)只能傳值,沒有類似于C#的ref 和out 傳遞引用。(注:Java 傳遞對(duì)象只是傳遞對(duì)象引用的copy)
Java 沒有partial types
C# 的interface 不能定義字段
Java 沒有unsigned 的整形
Java 沒有類型與nullable 的value types