一. 回顧歷史html
回顧我的發展歷程,自2012年初次接觸開發至今(2018年)已經有六個年頭,這期間陸陸續續學習並掌握了很多技術,C#語言、ORM框架、多線程技術、設計模式、前端技術、MVC、MVVM框架思想等等,每種技術隨着屢次使用,隨着不斷的反思,逐漸經歷 「瞭解→理解→掌握→精通 」這麼一個過程,從最初的只能實現功能到現在的「每一步都考慮性能優化問題」,在近兩年內,開始寫博客,最初只是一時興起,想讓百度上能搜索出個人文章,但如今已經造成一個習慣,在沒有特殊事情耽擱的狀況下,堅持一週兩篇博客,到目前爲止,有效文章數已經達到140多篇,固然後面還會陸續寫下去。前端
做爲理科生出身的我,沒有華麗的辭藻 ,沒有煽情篇章,話很少說,回顧完我的開發歷程,下面看一下C#和.Net的發展歷程,再次補充一點,.Net不是一門開發語言,而C#纔是基於.Net運行環境下的一種高級開發語言。java
從上面的表格能夠看出來,C#這麼語言至今已經接近20年曆史了,從2002年誕生的那一刻起,不斷更新,不斷改進,功能愈來愈強大,愈來愈方便程序們的開發,固然.NET類庫、CLR、以及開發神器Visual Studio也在不端更新。(VS 2017 宇宙第一開發神器 這個應該毫無爭議吧)linux
以前曾說過,C#僅僅是.Net下的一門開發語言而已,.Net生態遠遠不止如此。程序員
咱們之前提到.Net,指的都是.Net FrameWork,常常被java程序員嘲笑,.Net不能跨平臺,但如今不會來,他們能夠閉嘴了,.Net Core就是爲跨平臺而生,下面簡單總結一下.Net生態。正則表達式
(1) 語言有:C# 、F#、VB數據庫
(2) C/S程序開發技術有:WinForm、WPFmacos
(3) B/S程序開發技術有:ASP.Net WebForm 、ASP.Net MVC、Core MVC編程
(4) 通信技術有:WebAPI、WCF、SignalRwindows
(5) 日誌框架有:Log4Net
(6) 數據庫訪問技術有:ADO.NET 、EF
這裏再也不繼續列舉了,也沒有必要再列舉了,由於對於新時代合格的工程師而言,沒有人限制你只能掌握一種技術,任何一個大型的信息系統,都是有多種技術組合而來,在如今一個大一統的時代,連.Net的生身父母「微軟」都開源了,難道小小的你還能故步自封嗎?
二. 掃盲C#運行原理
C#做爲一門高級語言,機器是不認識的,那麼它是怎麼編譯成讓機器碼讓機器識別呢,一張圖勝似千言萬語,請看下圖。
概念補充:
CTS:C#、F#、VB都必須遵照的通用類型
CLS:通用語言規範(CLS是CTS的一個子集)
BCL:基礎類庫
總結:C#是一種面向對象的高級編程語言,符合CLR中的CLS(通用語言規範)
.Net Framework包含三部分:
1 CLR(windows), .net core的clr支持(windows、linux、macos)
2 開發工具包
3 BCL(基礎類庫)
三. 基礎進階系列及章節詳細介紹
最近一直在考慮初學者學習.Net應該從哪學起,上面說的天花亂墜,有什麼用呢? 若是連.Net最基礎的知識都掌握不了,還談什麼開發呢?
這裏結合我本身的理解,整理出一條較爲合適的路線,並對以前的博客從新排版從新改寫,造成這個【DotNet進階篇】系列,一方面方便本身往後複習,另外一方面也爲.Net社區盡一點綿薄之力。
第一節:從面向對象思想(oo)開發、接口、抽象類以及兩者比較
第二節:重寫(new)、覆寫(overwrite)、和重載(overload)
第三節:深度剖析各種數據結構(Array、List、Queue、Stack)及線程安全問題和yeild關鍵字
第五節:泛型(泛型類、接口、方法、委託、泛型約束、泛型緩存、逆變和協變)
第七節:語法總結(1)(自動屬性、out參數、對象初始化器、var和dynamic等)
第九節:委託和事件(1)(委託的發展歷史、插件式編程、多播委託)
第十節:委託和事件(2)(泛型委託、Func和Action、事件及與委託的比較)
第十一節:特性(常見的特性標籤、自定義特性、特性的使用案例)
第十五節:Expression表達式目錄樹(與委託的區別、自行拼接、總結幾類實例間的拷貝)
第十七節:易混淆的概念(靜態和非靜態、拆箱和裝箱、值傳遞和引用傳遞、深拷貝和淺拷貝)(持續更新)
第二十二節:XXXXXXXXXXXXXXXXXXXXXXXX
第二十三節:XXXXXXXXXXXXXXXXXXXXXXXX
!