本人有幸在Learning Hard舉行的整點搶書活動《Learninghard C#學習筆記》回饋網友,免費送書5本中免費獲得了一本《LEARNING HARD C#學習筆記》,我(夢在旅途)雖然從事.NET開發多年,但一直都沒有能好好的系統學習,特別是C#5.0的知識,現如今有幸得到這本書,可以好好的溫習、鞏固和提升, 非常感謝Learning Hard!
我在收到該書后,花了約兩周的時間就看完了,主要是集中在晚上及周末時間,因為本書是從淺入深講解C#知識,我雖談不上什么高手,但C#早期版本的相關知識基本都熟悉和掌握了,所以在閱讀的時候側重點主要放在后面(13章及以后),速度也就比較。我閱讀一般喜歡做總結及摘要,書中重要的知識點會做上標記,以便后面再次復習。孔子曰:溫故而知新,可以為師矣,所以我在看完這本書后,覺得有必要針對書中的要點及自己平時的經驗積累總結一些文章,以便后續再次溫習,也供新手學習參考。文中可能有些因理解差異存在不足,還請大家評論與指點,共同進步,謝謝!
一..NET基礎
CLR:公共語言運行庫
CTS:通用類型系統
CLS:公共語言規范
受CLR管理的代碼稱為托管代碼,否則稱為非托管代碼
二.類型與變量
數據類型分為:值類型與引用類型
值類型有:數值、枚舉、結構體
引用類型有:接口、類、委托、字符串、數組
值類型在棧中分配內存空間並保存數據;
引用類型在堆上分配內存空間並保存數據,且在棧中保存指向堆中的數據地址;
裝箱:值類型轉換為引用類型;
拆箱:引用類型轉換為值類型;
常量:Const標識,在聲明時就必需初始化,且不能更改,通過類名來訪問;
變量:
Static:初始化一次並持續保存在內存空間中,可反復讀寫;
Readonly:僅允許在聲明時或所在類的構造函數中初始化,其它地方不可更改;
Static Readonly與Const的區別:
Static Readonly可在構造函數中初始化,而Const則不行;
Static Readonly在運行時分配內存空間,而Const則在編譯時分配內存空間;
三.運算符
運算符重載定義方法如下:
Public static 類型 opearator 運算符(類型1,類型2);
注意:運算符重載方法的訪問修飾符必需為Public static
四.條件與循環
條件語句:1.if-else 2.switch
循環語句:1.while 2.do-while 3.for 4.foreach
跳轉語句:
Break:跳出循環或分支;continue:跳過本次循環並繼續執行下一次循環;
Goto:跳轉到指定的標簽處(不建議使用);
Return:退出所在方法,並直接返回或返回值,不限深度;
五.類
類訪問修飾符
Public 公共不受限訪問,同程序集或引用該程序集中的其它程序集中類內外部均可訪問;
Private 私有訪問,僅限在類內部訪問;
Protected 受保護訪問,僅限在類內部及其子類內部中可訪問;
Internal 在同一個程序集中類內外部均可訪問;
Protected internal 在同一個程序集的類內部及其子類內部中可訪問;
注意:默認不添加修飾符,則表示以Internal形式訪問
Sealed 密封,不可繼承;
Abstract 抽象,必需繼承,若是抽象成員則在子類中需用override重寫該成員;
Statict 靜態密封,不可實例化,且不可繼承;
在命名空間中定義的元素(類,接口,結構體,委托等)無法顯式地聲明為 private、protected 或 protected internal
構造函數:
1.可重載;2.沒有聲明則編譯后默認生成無參且空實現的構造函數;3.構造函數名與類名相同;
4.無返回值;
作用:通過NEW相應的構造函數來實例化一個對象;
靜態構造函數:
1.不能使用訪問修飾符;2.有且只能定義一個無參構造函數(即:不能重載);3.只會執行一次;
作用:初始化類中靜態成員;
析構函數:
- 無訪問修飾符;2.有且只能定義一個無參析構函數;3.不能重載;4.由垃圾回器GC自動調用;5.結構體不能定義析構函數;
索引指示器:
定義方法:修飾符 類型 this[索引參數列表,…]
注意:索引指示器訪問修飾符不能為static
六.類與結構體區別
1.類是引用類型,結構體是值類型;
2.結構體不能在聲明字段時進行初始化,而必須在構造函數中進行初始化,而類不受限制;
3.類默認的無參構造函數在顯式聲明后則不存在,而結構體中不能顯式聲明,所以一直存在;
4.結構體僅可實現接口,不能繼承類或結構體,而類可以繼承類也可實現接口;
5.結構體不能聲明為abstact、sealed、static,而類均可以;
6.結構體可以直接不用new聲明對象,但未賦值的字段不可用,而類必需則通過NEW來實例化對象;