1. 程式人生 > >C#與C及OC的不同點

C#與C及OC的不同點

其實熟悉這些語言的朋友們深知,這幾個語言完全沒有可比性。

由於工作需要,最近需要重溫C#語言,難免會受到C和OC的基礎知識影響。

此篇是本人的一個學習筆記,僅此獻給有C/OC基礎,需要繼續學習C#的朋友們。

今後不斷更新,歡迎大家補充修正(最後更新日期:2014.11.6)

 第1講 基礎:常量 變數 運算子 表示式 語句 ***** C#提供的基本型別更多,劃分更細 ***** C#裡bool型別就是bool型別,嚴格區別於整形 ***** C#中的控制檯輸入都是字元流,獲取其它型別需要用Parse方法轉化 int a = int.Parse(Console.Readline());
***** C#的宣告與實現不分離 《C#本質論 (第三版)》p.121  第2講 分支結構 ***** C#裡switch case 中 switch表示式的值還可以是字串型別  第3講 迴圈結構  陣列 ***** C#的陣列本質是System.Array 的物件。它是所有陣列型別的抽象基型別。必須進行例項化。 宣告陣列時,方括號 ([]) 必須跟在型別後面,而不是識別符號後面,且陣列的大小不是其型別的一部分。 如: bool[], byte[], int[],  float[], double[], string[],  *****  C#裡二維陣列和陣列的陣列(交錯陣列)是兩個東西
二維陣列定義: string[,] names; 交錯陣列 (jagged array) byte[][] scores; http://msdn.microsoft.com/zh-cn/library/aa288453(v=vs.71).aspx ***** C#裡陣列可以直接賦值,但是和C一樣不能直接做加減運算  第4講 列舉和結構體 ***** C#中列舉不是一個單純的整形常量 http://msdn.microsoft.com/zh-cn/library/cc138362.aspx ***** C#中的結構體更強大、更靈活,裡面可以直接包含方法 ***** C#中結構體的成員變數型別修飾符必須是public
結構可以實現介面,但它們無法繼承另一個結構。 因此,結構成員無法宣告為 protected。 http://msdn.microsoft.com/zh-cn/library/ah19swz4.aspx  第5講 引用型別 字串 ***** C#有獨特的引用型別,是裝箱獲得的 值型別裝箱後會被扔到堆裡 http://msdn.microsoft.com/zh-cn/library/yz2be5wk.aspx ***** C#的字串是一個類  第6講 類 ***** C#的類裡包含方法、屬性、欄位、事件、委託以及內部巢狀的類等 http://msdn.microsoft.com/zh-cn/library/ms173113.aspx 一個類可包含下列成員的宣告:
建構函式(Constructor)
解構函式
常量(Const)
欄位(Field)
方法(Method)
屬性(Property)
索引器(Indexers)
運算子(Operator)
事件(Event)
委託(Delegate)
(Class)
介面(Interface)
結構(Struct) ***** C#裡的修飾符特別豐富、可以修飾好多東西 1.訪問級別、控制有效範圍和許可權的:public protected private internal 2.控制記憶體分配區域的:static const 3.宣告函式引數的:ref out params 4. 虛實:virtual http://msdn.microsoft.com/zh-cn/library/9fkccyh4.aspx ***** 訪問許可權

在其他選件類中可以直接在名稱空間內宣告的選件類,未巢狀,可以是 公開 或 內部。 預設情況下選件類是 internal。

類成員,包括巢狀選件類,可以是 公開、protected internal、保護內部或 專用。 預設情況下成員是 專用

http://msdn.microsoft.com/zh-cn/library/0b0thckt.aspx ***** C#的屬性 可以是隻寫的 在欄位的基礎上建立,屬性開頭字母是大寫的 ***** C#的函式只能在類裡面定義 ***** C#有密封類 ***** C#有base語句 建構函式可以使用 base 關鍵字來呼叫基類的建構函式。 http://msdn.microsoft.com/zh-cn/library/ms173115.aspx  第7講 方法(函式) ***** C#的方法只能出現在類和結構體裡 ***** C#裡有方法簽名的概念 方法名 引數 及 引數型別 http://msdn.microsoft.com/zh-cn/library/ms173114.aspx ***** C#的函式引數是有修飾符的 ref:引用引數 out:輸出引數 params:一維陣列 ***** C#通過解構函式釋放記憶體資源 ***** C#有虛方法 http://msdn.microsoft.com/zh-cn/library/9fkccyh4.aspx ***** C#中稱之為方法簽名  第8講 面向物件 ***** C#中有繼承關係的兩個類分別叫基類和派生類 當基類將方法宣告為 virtual 時,派生類可以用自己的實現重寫該方法。  http://msdn.microsoft.com/zh-cn/library/ms173149.aspx?sentenceGu=431ef25c6bea78755c146f18e5e213ae#mt9 ***** C#的多型比較多型,有多種實現方式  第9講 靜態類和抽象類 ***** 靜態類和抽象類是C#獨有的
 第10講 介面和泛型 ***** C#的介面類似OC的協議
http://blog.csdn.net/byondocean/article/details/6871881  第11講 集合 ***** C#的集合分為泛型集合和非泛型集合 http://msdn.microsoft.com/zh-cn/library/yz2be5wk.aspx  第12講 委託和事件 ***** C#的委託類似於C的函式指標,但是型別安全,已經被封裝成了一個型別 ***** C#的觀察者設計模式由委託和事件來實現
 第13講 反射 ***** 反射是C#獨有的

總的來說,感覺C#的修飾符特別的豐富,關於修飾符的內容還在整理中。