總體了解C#(1 C#和Java)
A Comparative Overview of C#中文版
作者:Ben Albahari
公司:Genamics
日期:2000年7月31日初版,2000年8月10日修訂。
感謝以下人士支持和反饋(按字母先後順序):Don Box、 C.R. Manning、 Joe Nalewabau、 John Osborn、 Thomas Rhode & Daryl Richter。
譯者:榮耀
下面是C#和Java共有的特性列表,目的都是為了改進C++。這些特性雖非本文重點,但了解它們之間的相似之處還是很重要的。
l 編譯為機器獨立、語言獨立的代碼,運行在受控執行環境裡;
l 采用垃圾收集機制,同時摒棄了指針(C#中,指針被限制在標為unsafe的代碼內使用);
l 強有力的反射能力;
l 沒有頭文件,所有的代碼都在包或組合體裡,不存在類聲明的循環依賴問題;
l 所有的類都派生自object,且必須用new關鍵字分配在堆上;【譯注:Java中為Object;C#中為object,相當於.NET的System.Object】
l 當進入標為鎖定/同步代碼時,通過在對象上加鎖來支持多線程;【譯注:例如Java中可對方法施以synchronized關鍵字,在C#中可使用Monitor類、Mutex類、lock語句等等】
l 接口支持—多繼承接口,單繼承實現;
l 內部類;
l 類繼承時無需指定訪問級別;【譯注:在C++中,你可以這麼做:class cls2: private cls1{};等等】
l 沒有全局函數或常量,一切都必須屬於類;
l 數組和字符串都保存長度記數並具邊界檢查能力;
l 永遠使用“.”操作符,不再有“->”、“::”操作符;
l null和boolean/bool是關鍵字;【譯注:Java中為boolean、C#中為bool,相當於System.Boolean】
l 所有的值在使用前必須被初始化;
l if語句不能使用整型數為判別條件;
l try語句塊後可以跟finally從句。【譯注:標准C++不可以,但Visual C++對SEH做了擴展,可以用__try和__finally】