【送书活动】C# 程序员的自我修养
如果希望成為一個C# 高手,或者至少是合格的C# 程序員,應該懂些什么?《C#從現(xiàn)象到本質(zhì)》(以下簡稱本書)試圖回答這個問題。實際上,在本書問世之前,市面上已經(jīng)有很多優(yōu)秀的C# 書籍,例如著名的《CLR via C#》《C# in Depth》,本書也參考了其中一些章節(jié),但加入了這兩本書沒有覆蓋到的一些重要知識點。本書基于C# 7.0編寫。
?
一個合格的C# 程序員必須熟悉C# 最核心的語言特性。本書沒有講基礎的C# 語法,例如if/else/switch/while等等,因為人人都會。本書重點強調(diào)的是引用類型和值類型的區(qū)別和聯(lián)系、委托與事件、泛型、反射、GC、LINQ相關、DLR相關,等等。這些知識對一些人來說,可能在實際開發(fā)中從來沒有用到(例如DLR),或者一直都在使用但不自知(例如LINQ中隱含了委托);但是,對這些內(nèi)容是否深入理解,是區(qū)分一個批量生產(chǎn)的C# 程序員與一個合格的C# 程序員的很好方法。也許,你會覺得這些東西太過細微,似乎是“死摳書本”,但正如著名C# 程序員老趙曾經(jīng)說的,“您也會覺得這些太細節(jié),真要追究起來似乎也大都不是必須的,無視這些照樣可以寫程序,做網(wǎng)站,賺工資,但是我不會滿足于成為(包括招聘)這樣的程序員,暫時也懶得解釋掌握這些東西的益處和重要性”。我對此的理解就是“project is cheap, show me theessential”。每個面試者都自帶了若干個項目,你的優(yōu)勢在何處呢?你如何顯現(xiàn)出水平高人一等呢?本書使用了大量的篇幅講解C# 的核心語言特性,力求做到有一定的深度,和快速入門的書籍區(qū)別開。本書對任何一個語言特性,例如委托,都盡力闡述它的底層實現(xiàn)大概是怎樣的,引入它是為了解決什么問題,在它沒有出現(xiàn)時,類似的問題又是如何解決的。
?
一個合格的C# 程序員應該知道程序的本質(zhì)是什么,程序是如何在操作系統(tǒng)上運行起來的。《CLR via C#》之所以著名,因為它是第一個用CLR的視角來分析C# 語言的書(請仔細體會書名)。CLR的功能、兩步編譯、IL、對象在內(nèi)存上的分布,這些內(nèi)容可能在平時開發(fā)上真的用不到,但當你處理性能優(yōu)化時,就會發(fā)現(xiàn)它們非常有用。
?
一個合格的C# 程序員應該對C# 提供的各種數(shù)據(jù)結(jié)構(gòu)心中有數(shù)。數(shù)據(jù)結(jié)構(gòu)和算法可謂程序設計的兩大支柱,而現(xiàn)在它們的重要性似乎越來越小了,這是因為我們有太多的庫可以直接拿來使用,不需要自己去實現(xiàn)一個經(jīng)典的數(shù)據(jù)結(jié)構(gòu)。也許我們不需要做到像算法工程師那樣,對各種復雜的樹(例如紅黑樹)、圖有深刻認識,但是,對常見的數(shù)據(jù)結(jié)構(gòu),包括線性表、鏈表、隊列、棧、哈希表等等概念和操作時間復雜度,是任何程序員都應該掌握的。本書的第11章專門討論C# 的常見數(shù)據(jù)結(jié)構(gòu),這是同類型書籍較為少見的話題。
?
一個合格的C# 程序員應該了解什么是線程,以及如何使用C# 進行多線程編程。如果一個WPF程序在執(zhí)行耗時較長的任務時,界面直接凍結(jié),用戶只能坐等,那么這個程序肯定不會令人滿意。C# 提供了非常豐富的類庫可方便快捷地實現(xiàn)多線程。如果你想了解更多關于線程和進程的基本概念,本書的深度并不夠,你可以找任意一本操作系統(tǒng)方面的書去研究。當多個線程有機會操作同一個資源時,線程同步變得十分重要。此時,需要有一個機制令同一時間只有有限個線程可以操作一個資源。C# 使用不同種類的鎖來實現(xiàn)它。思路主要有兩種:第一種是把資源操作變?yōu)樵拥?#xff0c;稱為用戶模式的鎖;第二種是將資源和一個內(nèi)核對象掛鉤,線程操作資源時需要去請示內(nèi)核對象,這稱為內(nèi)核模式的鎖。顯然,由于訪問內(nèi)核對象速度很慢,還可以將這兩種思路綜合起來得到混合模式的鎖,以加強鎖的性能。本書的最后一部分比較詳細地討論了多線程的基本概念、同步以及各種多線程的實現(xiàn)方式,以最新的async/await作為結(jié)尾。
?
如果你已經(jīng)了解了上面所說的全部內(nèi)容,那么在小白程序員眼中,你可能已經(jīng)是一個C# 高手了。但很顯然,還有很多很多東西本書沒有涉及,例如設計模式、持續(xù)集成、測試、數(shù)據(jù)庫訪問、性能優(yōu)化,等等。C# 程序員可以只會拖拖控件就能找到工作,也可以手握利劍解決別人解決不了的問題。我相信每個人都希望成為后者那樣的類型,通過自己的努力,進入更好的公司,接觸到更具有挑戰(zhàn)性的項目,與更厲害的程序員共事。希望本書可以在你學習C# 的過程中,對你有所幫助。?
京東地址:https://item.jd.com/12426618.html
作者簡介:
郝亦非 ?資深.NET開發(fā)人員,擁有多年開發(fā)經(jīng)驗,長期負責后端系統(tǒng)的搭建、重構(gòu)與維護,對C# 語言理解深刻,在工作中積累了豐富的開發(fā)經(jīng)驗,樂于分享,在社區(qū)貢獻了大量文章。
?
內(nèi)容簡介:
本書詳細介紹用C# 語言進行程序開發(fā)需要掌握的知識和技術。全書由分三大部分,共21章,第一部分“基礎知識”,包括.NET基礎知識、C# 類型基礎、C# 的面向?qū)ο蠹夹g、字符串、垃圾回收、異常處理;第二部分“C# 特性”,包括委托和事件、泛型和反射、數(shù)據(jù)結(jié)構(gòu)、LINQ的相關技術、動態(tài)語言運行時;第三部分“多線程和異步”,包括多線程的概念、多線程同步、異步編程的理論與實例、任務并行庫等。本書精選大量案例,循序漸進地講解C# 語言,內(nèi)容豐富而翔實,并給出練習題,幫助讀者更好地鞏固所學知識,提升能力。本書還介紹了.NET程序員開發(fā)職位要求、技能等級、進階之路,以及面試要點,可幫助開發(fā)者快速進階,找到適合自己的工作。本書所有案例代碼可以下載,地址為https://github.com/s055523/CodeForCSharpBook。
歡迎留下您對本文的討論,以及對C# 程序員的基礎知識方面的感悟。評論獲點贊最多的前五位讀者將獲贈《C#從現(xiàn)象到本質(zhì)》圖書一本(包郵)
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的【送书活动】C# 程序员的自我修养的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Office 365开发入门指南》上市
- 下一篇: C# 接受MQTT服务器推送的消息