關(guān)于我們
書(shū)單推薦
新書(shū)推薦
|
C# 8.0本質(zhì)論 作為歷年來(lái)深受各層次開(kāi)發(fā)人員歡迎的C#指南,本書(shū)討論了C# 3.0到C# 8.0中的重要C#特性,強(qiáng)調(diào)了現(xiàn)代編程模式,可幫助讀者編寫(xiě)簡(jiǎn)潔、強(qiáng)大、健壯、安全且易于維護(hù)的C#代碼。 在本書(shū)中,世界知名C#專(zhuān)家Mark Michaelis對(duì)C#語(yǔ)言進(jìn)行了全面而深入的探討,并提供了關(guān)于空引用類(lèi)型、索引和區(qū)間、增強(qiáng)模式匹配、異步流等關(guān)鍵C# 8.0增強(qiáng)功能的專(zhuān)業(yè)論述。他用簡(jiǎn)潔的例子闡釋關(guān)鍵C#構(gòu)造,并提供了大量?jī)?yōu)秀實(shí)踐編程規(guī)范,可為你快速掌握專(zhuān)家級(jí)C#編程技能并進(jìn)行高效軟件開(kāi)發(fā)提供翔實(shí)指導(dǎo)。 本書(shū)內(nèi)容: 適讀人群 :C#開(kāi)發(fā)人員,以及任何對(duì)C#語(yǔ)言感興趣的讀者 本書(shū)全面講述C#語(yǔ)言。 對(duì)于初學(xué)者而言,其內(nèi)容已遠(yuǎn)遠(yuǎn)超過(guò)了一本簡(jiǎn)單的教程,可為讀者未來(lái)進(jìn)行高效率軟件開(kāi)發(fā)打下堅(jiān)實(shí)基礎(chǔ); 對(duì)于已熟悉C#的讀者,本書(shū)探討了一些較為復(fù)雜的編程思想,并深入討論了語(yǔ)言較新版本(C# 8.0和.NET Framework 4.8/.NET Core 3.1)的新功能; 對(duì)于已經(jīng)精通這門(mén)語(yǔ)言的讀者,也可以始終將其作為案頭參考。 本書(shū)基于管理復(fù)雜性的宗旨來(lái)組織內(nèi)容。 第1~5章介紹結(jié)構(gòu)化編程,學(xué)習(xí)這些內(nèi)容后,可以立即開(kāi)始寫(xiě)一些功能簡(jiǎn)單的代碼。 第6~10章介紹C#的面向?qū)ο髽?gòu)造,新手應(yīng)在完全理解這幾章的內(nèi)容之后,再開(kāi)始接觸本書(shū)其余部分更高級(jí)的主題。 第12~14章介紹更多用于降低復(fù)雜性的構(gòu)造,講解當(dāng)今幾乎所有程序都要用到的通用設(shè)計(jì)模式。理解了它們之后,才可以更輕松地理解如何通過(guò)反射和特性來(lái)進(jìn)行動(dòng)態(tài)編程。 第15~23章將廣泛運(yùn)用它們來(lái)實(shí)現(xiàn)線(xiàn)程處理和互操作性。 本書(shū)最后專(zhuān)門(mén)用一章(第24章)講解CLI。 這一章在開(kāi)發(fā)平臺(tái)的背景下對(duì)C#語(yǔ)言進(jìn)行了描述。 在軟件工程的發(fā)展歷史中,用于編寫(xiě)計(jì)算機(jī)程序的方法經(jīng)歷了幾次思維模式的重大轉(zhuǎn)變。每種思維模式都以前一種為基礎(chǔ),宗旨都是增強(qiáng)代碼的組織,并降低復(fù)雜性。本書(shū)將帶領(lǐng)你體驗(yàn)相同的思維模式轉(zhuǎn)變過(guò)程。 本書(shū)開(kāi)始幾章會(huì)指導(dǎo)你學(xué)習(xí)順序編程結(jié)構(gòu)。在這種編程結(jié)構(gòu)中,語(yǔ)句按編寫(xiě)順序執(zhí)行。該結(jié)構(gòu)的問(wèn)題在于,隨著需求的增加,復(fù)雜性也會(huì)指數(shù)級(jí)增加。為降低復(fù)雜性,將代碼塊轉(zhuǎn)變成方法,從而產(chǎn)生了結(jié)構(gòu)化編程模型。在這種模型中,可以從一個(gè)程序中的多個(gè)位置調(diào)用同一個(gè)代碼塊,而不需要復(fù)制代碼。但即使有這種結(jié)構(gòu),程序還是會(huì)很快變得臃腫不堪,需要進(jìn)一步抽象。所以,在此基礎(chǔ)上人們又提出了面向?qū)ο缶幊痰母拍睿@將在第6章中討論。在此之后,你將繼續(xù)學(xué)習(xí)其他編程方法,比如基于接口的編程和LINQ(以及它促使集合API發(fā)生的改變),并最終學(xué)習(xí)通過(guò)特性(attribute)進(jìn)行初級(jí)的聲明性編程(第18章)。 【本書(shū)有以下三個(gè)主要職能】。 全面講述C#語(yǔ)言,其內(nèi)容已遠(yuǎn)遠(yuǎn)超過(guò)了一本簡(jiǎn)單的教程,可為你進(jìn)行高效率軟件開(kāi)發(fā)打下堅(jiān)實(shí)基礎(chǔ)。 對(duì)于已熟悉C#的讀者,本書(shū)探討了一些較為復(fù)雜的編程思想,并深入討論了語(yǔ)言較新版本(C# 8.0和.NET Framework 4.8/.NET Core 3.1)的新功能。 它是你永遠(yuǎn)的案頭參考—即便在你精通了這種語(yǔ)言之后。 成功學(xué)習(xí)C#的關(guān)鍵在于,要盡可能快地開(kāi)始編程。不要等自己成為一名理論“專(zhuān)家”之后才開(kāi)始寫(xiě)代碼。所以不要猶豫,馬上開(kāi)始寫(xiě)程序吧。作為迭代開(kāi)發(fā)思想的追隨者,我希望即使一名剛開(kāi)始學(xué)習(xí)編程的新手,在第2章結(jié)束時(shí)也能動(dòng)手編寫(xiě)基本的C#代碼。 許多主題本書(shū)沒(méi)有討論。你在本書(shū)中找不到ASP.NET、Entity Framework、Xamarin、智能客戶(hù)端開(kāi)發(fā)以及分布式編程等主題。雖然這些主題與.NET有關(guān),但它們都值得用專(zhuān)門(mén)的書(shū)分專(zhuān)題講述。幸好市面上已經(jīng)有豐富的圖書(shū)供讀者選擇。本書(shū)重點(diǎn)在于C#及基類(lèi)庫(kù)中的類(lèi)型。讀完本書(shū)之后,你在上述任何領(lǐng)域繼續(xù)深入學(xué)習(xí)都會(huì)游刃有余。 【本書(shū)面向的讀者】 寫(xiě)作本書(shū)時(shí),我面臨的一個(gè)挑戰(zhàn)是如何在持續(xù)吸引高級(jí)開(kāi)發(fā)者眼球的同時(shí),不因使用assembly、link、chain、thread和fusion等字眼而打擊初學(xué)者的信心,否則許多人會(huì)以為這是一本講冶金而不是程序設(shè)計(jì)的書(shū)。本書(shū)的主要讀者是已經(jīng)有一定編程經(jīng)驗(yàn),并想多學(xué)一種語(yǔ)言來(lái)“傍身”的開(kāi)發(fā)者。但我還是小心地編排了本書(shū)的內(nèi)容,使之對(duì)各種層次的開(kāi)發(fā)者都有足夠大的價(jià)值。 初學(xué)者:假如你是編程新手,本書(shū)將幫助你從入門(mén)級(jí)程序員過(guò)渡為C#開(kāi)發(fā)者,消除以后在面臨任何C#編程任務(wù)時(shí)的畏懼心理。本書(shū)不僅要教會(huì)你語(yǔ)法,還要教你養(yǎng)成良好的編程習(xí)慣,為將來(lái)的編程生涯打下良好基礎(chǔ)。 熟悉結(jié)構(gòu)化編程的程序員:學(xué)習(xí)外語(yǔ)最好的方法就是“沉浸法”。類(lèi)似地,學(xué)習(xí)一門(mén)計(jì)算機(jī)語(yǔ)言最好的方法就是在動(dòng)手中學(xué)習(xí),而不是等熟知了它的所有“理論”之后再動(dòng)手;谶@個(gè)前提,本書(shū)最開(kāi)始的內(nèi)容是那些熟悉結(jié)構(gòu)化編程的開(kāi)發(fā)者很容易上手的。到第5章結(jié)束時(shí),這些開(kāi)發(fā)者應(yīng)該可以開(kāi)始寫(xiě)基本的控制流程序。然而,要成為真正的C#開(kāi)發(fā)者,記住語(yǔ)法只是第一步。為了從簡(jiǎn)單程序過(guò)渡到企業(yè)級(jí)開(kāi)發(fā),C#開(kāi)發(fā)者必須從對(duì)象及其關(guān)系的角度來(lái)思考問(wèn)題。為此,第6章的“初學(xué)者主題”開(kāi)始介紹類(lèi)和面向?qū)ο箝_(kāi)發(fā)。歷史上的C、COBOL和FORTRAN等結(jié)構(gòu)化編程語(yǔ)言雖然仍在發(fā)揮作用,但作用會(huì)越來(lái)越小,所以,軟件工程師們應(yīng)該逐漸開(kāi)始了解面向?qū)ο箝_(kāi)發(fā)。C#是進(jìn)行這一思維模式轉(zhuǎn)變的理想語(yǔ)言,因?yàn)樗緛?lái)就是基于“面向?qū)ο箝_(kāi)發(fā)”這一中心思想來(lái)設(shè)計(jì)的。 熟悉“基于對(duì)象”和“面向?qū)ο蟆崩砟畹拈_(kāi)發(fā)者:C++、Python、TypeScript、Visual Basic和Java程序員都可歸于此類(lèi)。對(duì)于分號(hào)和大括號(hào),他們可是一點(diǎn)兒都不陌生!簡(jiǎn)單瀏覽一下第1章的代碼,你會(huì)發(fā)現(xiàn),從核心上講,C#類(lèi)似于你熟知的C和C++風(fēng)格的語(yǔ)言。 C#專(zhuān)家:對(duì)于已經(jīng)精通C#的讀者,本書(shū)可供你參考不太常見(jiàn)的語(yǔ)法。此外,對(duì)于在其他地方強(qiáng)調(diào)較少的一些語(yǔ)言細(xì)節(jié)以及微妙之處,我提出了自己的見(jiàn)解。最重要的是,本書(shū)提供了編寫(xiě)可靠和易維護(hù)代碼的指導(dǎo)原則及模式。另外,在你教別人學(xué)C#時(shí),本書(shū)也頗有助益。 從C# 3.0到C# 8.0最重要的一些增強(qiáng)包括: 字符串插值(第2章) 隱式類(lèi)型的變量(第3章) 元組(第3章) 可空引用類(lèi)型(第3章) 模式匹配(第4章) 擴(kuò)展方法(第6章) 分部方法(第6章) 默認(rèn)接口成員(第8章) 匿名類(lèi)型(第12章) 泛型(第12章) Lambda語(yǔ)句和表達(dá)式(第13章) 表達(dá)式樹(shù)(第13章) 匿名類(lèi)型(第15章) 標(biāo)準(zhǔn)查詢(xún)操作符(第15章) 查詢(xún)表達(dá)式(第16章) 動(dòng)態(tài)編程(第18章) 用任務(wù)編程庫(kù)(TPL)和async進(jìn)行多線(xiàn)程編程(第20章) 用PLINQ進(jìn)行并行查詢(xún)處理(第21章) 并發(fā)集合(第22章) 考慮到許多人還不熟悉這些主題,本書(shū)圍繞它們展開(kāi)了詳細(xì)的討論。涉及高級(jí)C#開(kāi)發(fā)的還有“指針”這一主題,該主題將在第23章討論。即使是有經(jīng)驗(yàn)的C#開(kāi)發(fā)者,也未必能很透徹地理解這一主題。 【本書(shū)特色】 本書(shū)是語(yǔ)言參考書(shū),遵循核心C#語(yǔ)言規(guī)范(C# Language Specification)。為了幫助讀者理解各種C#構(gòu)造,書(shū)中用大量例子演示了每一種特性,而且為每個(gè)概念都提供了相應(yīng)的指導(dǎo)原則和最佳實(shí)踐,以確保代碼能順利編譯,避免留下隱患,并獲得最佳的可維護(hù)性。為增強(qiáng)可讀性,所有代碼均進(jìn)行了特殊格式處理,而且每章內(nèi)容都用思維導(dǎo)圖來(lái)概括。 【示例代碼】 請(qǐng)登錄華章網(wǎng)站(www.hzbook.com)或訪(fǎng)問(wèn)https://IntelliTect.com/EssentialCSharp下載示例代碼。 【思維導(dǎo)圖】 每章開(kāi)頭都有一幅“思維導(dǎo)圖”作為提綱,目的是為讀者提供針對(duì)每章內(nèi)容的快速參考。 每章主題顯示在思維導(dǎo)圖的中心,高級(jí)主題圍繞中心展開(kāi)。利用思維導(dǎo)圖,讀者可方便地搭建自己的知識(shí)體系,可以從一個(gè)主題出發(fā),更清楚地理解其周邊的各個(gè)具體概念,避免中途糾纏于一些不相干的枝節(jié)問(wèn)題。 【分類(lèi)解說(shuō)】 根據(jù)編程水平的不同,可以利用書(shū)中的標(biāo)志來(lái)幫助自己輕松找到適合自己的內(nèi)容。 初學(xué)者主題:特別針對(duì)入門(mén)級(jí)程序員提供的定義或解釋。 高級(jí)主題:可以讓有經(jīng)驗(yàn)的開(kāi)發(fā)者將注意力放在他們最關(guān)心的內(nèi)容上。 標(biāo)注:用有底紋的標(biāo)注框強(qiáng)調(diào)關(guān)鍵點(diǎn),引起讀者的注意。 語(yǔ)言對(duì)比:分散在正文中的補(bǔ)充內(nèi)容描述了C#和其他語(yǔ)言的關(guān)鍵差異,為熟悉其他語(yǔ)言的讀者提供指引。 【本書(shū)內(nèi)容組織】 總體來(lái)說(shuō),軟件工程的宗旨就是管理復(fù)雜性。本書(shū)基于該宗旨來(lái)組織內(nèi)容。第1章~第5章介紹結(jié)構(gòu)化編程,學(xué)習(xí)這些內(nèi)容后,可以立即開(kāi)始寫(xiě)一些功能簡(jiǎn)單的代碼。第6章~第10章介紹C#的面向?qū)ο髽?gòu)造,新手應(yīng)在完全理解這幾章的內(nèi)容之后,再開(kāi)始接觸本書(shū)其余部分更高級(jí)的主題。第12章~第14章介紹更多用于降低復(fù)雜性的構(gòu)造,講解當(dāng)今幾乎所有程序都要用到的通用設(shè)計(jì)模式。理解了它們之后,才可以更輕松地理解如何通過(guò)反射和特性來(lái)進(jìn)行動(dòng)態(tài)編程。后續(xù)章節(jié)將廣泛運(yùn)用它們來(lái)實(shí)現(xiàn)線(xiàn)程處理和互操作性。 本書(shū)最后專(zhuān)門(mén)用一章(第24章)講解CLI。這一章在開(kāi)發(fā)平臺(tái)的背景下對(duì)C#語(yǔ)言進(jìn)行了描述。之所以要放到最后,是因?yàn)樗荂#特有,且不涉及語(yǔ)法和編程風(fēng)格問(wèn)題。不過(guò),該章適合在任何時(shí)候閱讀,或許最恰當(dāng)?shù)臅r(shí)機(jī)是在閱讀完第1章之后。 下面是每一章的內(nèi)容提要。(章號(hào)加黑表明那一章含有C# 7.0和C# 8.0的內(nèi)容。) 第1章:本章在展示了用C#寫(xiě)的HelloWorld程序之后對(duì)其進(jìn)行細(xì)致分析。目的是讓讀者熟悉C#程序的“外觀(guān)和感覺(jué)”,并理解如何編譯和調(diào)試自己的程序。另外,還簡(jiǎn)單描述執(zhí)行C#程序的上下文及其中間語(yǔ)言(Intermediate Language,IL)。 第2章:任何有用的程序都要處理數(shù)據(jù),本章介紹C#的基元數(shù)據(jù)類(lèi)型。 第3章:本章深入講解數(shù)據(jù)類(lèi)型的兩大類(lèi)別—值類(lèi)型和引用類(lèi)型。然后講解隱式類(lèi)型局部變量、元組、可空修飾符以及C# 8.0引入的可空引用類(lèi)型。最后深入討論基元數(shù)組結(jié)構(gòu)。 第4章:計(jì)算機(jī)最擅長(zhǎng)重復(fù)性操作,為利用該能力,需知道如何在程序中添加循環(huán)和條件邏輯。本章還討論C#操作符、數(shù)據(jù)轉(zhuǎn)換和預(yù)處理器指令。 第5章:本章討論方法及其參數(shù)的細(xì)節(jié),其中包括通過(guò)參數(shù)來(lái)傳值、傳引用和通過(guò)out參數(shù)返回?cái)?shù)據(jù)。C# 4.0新增了默認(rèn)參數(shù),本章將解釋如何使用。 第6章:前面已學(xué)過(guò)類(lèi)的基本構(gòu)成元素,本章合并這些構(gòu)造,以獲得具有完整功能的類(lèi)型。類(lèi)是面向?qū)ο蠹夹g(shù)的核心,它定義了對(duì)象模板。本章還包括C# 8.0中新引入的可空屬性。 第7章:繼承是許多開(kāi)發(fā)者的基本編程手段,C#更是提供了一些獨(dú)特構(gòu)造,比如new修飾符。本章討論繼承語(yǔ)法的細(xì)節(jié),其中包括重寫(xiě)(overriding)。 第8章:本章討論如何利用接口來(lái)定義類(lèi)之間的“可進(jìn)行版本控制的交互契約”(versionable interaction contract)。C#同時(shí)包含顯式和隱式接口成員實(shí)現(xiàn),可實(shí)現(xiàn)一個(gè)額外的封裝等級(jí),這是其他大多數(shù)語(yǔ)言所不支持的。隨著默認(rèn)接口成員的引入,該章有一節(jié)討論接口版本控制。 第9章:盡管不如定義引用類(lèi)型那么頻繁,但有時(shí)確有必要定義行為和C#內(nèi)置基元類(lèi)型相似的值類(lèi)型。本章介紹如何定義結(jié)構(gòu)(struct),同時(shí)也強(qiáng)調(diào)其特殊性。 第10章:本章討論更高級(jí)的類(lèi)型定義,解釋如何實(shí)現(xiàn)操作符,比如+和轉(zhuǎn)型操作符,并描述如何將多個(gè)類(lèi)封裝到一個(gè)庫(kù)中。此外,還演示如何定義命名空間和XML注釋?zhuān)⒂懻撊绾位诶厥諜C(jī)制來(lái)設(shè)計(jì)令人滿(mǎn)意的類(lèi)。 第11章:本章延伸討論第5章引入的異常處理機(jī)制,描述如何利用異常層次結(jié)構(gòu)創(chuàng)建自定義異常。此外,還強(qiáng)調(diào)了異常處理的一些最佳實(shí)踐。 第12章:泛型或許是C# 1.0最缺少的功能。本章全面討論自2.0引入的泛型機(jī)制。此外,C# 4.0增加了對(duì)協(xié)變和逆變的支持,本章將在泛型背景中探討它們。 第13章:正因?yàn)橛辛宋校珻#才與其前身語(yǔ)言(C和C++等)有了顯著不同,它定義了在代碼中處理事件的模式。這幾乎完全消除了寫(xiě)輪詢(xún)例程的必要。Lambda表達(dá)式是使C# 3.0的LINQ成為可能的關(guān)鍵概念。通過(guò)學(xué)習(xí)本章,你將知道Lambda表達(dá)式是在委托的基礎(chǔ)上構(gòu)建起來(lái)的,它提供了比委托更優(yōu)雅和簡(jiǎn)潔的語(yǔ)法。本章內(nèi)容是后面討論的集合API的基礎(chǔ)。這里還介紹了另一個(gè)C# 2.0特性—匿名方法。 第14章:封裝起來(lái)的委托(稱(chēng)為事件)是公共語(yǔ)言運(yùn)行時(shí)(Common Language Runtime,CLR)的核心構(gòu)造。 第15章:通過(guò)討論Enumerable類(lèi)的擴(kuò)展方法,介紹C# 3.0引入的一些簡(jiǎn)單而強(qiáng)大的改變。Enumerable類(lèi)造就了集合API,即“標(biāo)準(zhǔn)查詢(xún)操作符”,本章對(duì)其進(jìn)行詳細(xì)討論。 第16章:如果只使用標(biāo)準(zhǔn)查詢(xún)操作符,會(huì)形成讓人難以辨認(rèn)的長(zhǎng)語(yǔ)句。查詢(xún)表達(dá)式提供了一種類(lèi)似SQL風(fēng)格的語(yǔ)法,有效解決了該問(wèn)題。本章會(huì)詳細(xì)討論這種表達(dá)式。 第17章:構(gòu)建用于操縱業(yè)務(wù)對(duì)象的自定義API時(shí),經(jīng)常需要?jiǎng)?chuàng)建自定義集合。本章討論了具體做法,還介紹了能使自定義集合的構(gòu)建變得更簡(jiǎn)單的上下文關(guān)鍵字。 第18章:20世紀(jì)80年代末,程序結(jié)構(gòu)的思維模式發(fā)生了根本性的變化,面向?qū)ο蟮木幊淌沁@個(gè)變化的基礎(chǔ)。類(lèi)似地,特性(attribute)使聲明性編程和嵌入元數(shù)據(jù)成為可能,因而引入了一種新的思維模式。本章探討特性的方方面面,并討論如何通過(guò)反射機(jī)制來(lái)獲取它們。本章還討論如何通過(guò)基類(lèi)庫(kù)(Base Class Library,BCL)中的序列化框架來(lái)實(shí)現(xiàn)文件的輸入和輸出。C# 4.0新增了dynamic關(guān)鍵字,能將所有類(lèi)型檢查都移至運(yùn)行時(shí)進(jìn)行,因而極大地?cái)U(kuò)展了C#的能力。 第19章:大多數(shù)現(xiàn)代程序都要求用線(xiàn)程執(zhí)行長(zhǎng)時(shí)間運(yùn)行的任務(wù),同時(shí)確保對(duì)并發(fā)事件的快速響應(yīng)。隨著程序越來(lái)越復(fù)雜,必須采取其他措施來(lái)保護(hù)這些高級(jí)環(huán)境中的數(shù)據(jù)。多線(xiàn)程應(yīng)用程序的編寫(xiě)比較復(fù)雜。本章討論如何操縱線(xiàn)程,并提供一些最佳實(shí)踐來(lái)避免將多線(xiàn)程應(yīng)用程序弄得一團(tuán)糟。 第20章:本章深入研究基于任務(wù)的異步模式及其附帶的async/await語(yǔ)法。它為多線(xiàn)程編程提供了一種極其簡(jiǎn)化的方法。此外,還包括異步流的C# 8.0概念。 第21章:引入性能改進(jìn)的一種簡(jiǎn)單方法是使用parallel對(duì)象或并行LINQ庫(kù)并行迭代數(shù)據(jù)。 第22章:本章以第21章為基礎(chǔ),演示如何利用一些內(nèi)建線(xiàn)程處理模式來(lái)簡(jiǎn)化對(duì)多線(xiàn)程代碼的顯式控制。 第23章:必須意識(shí)到C#是一種相對(duì)年輕的語(yǔ)言,許多現(xiàn)有的代碼是用其他語(yǔ)言寫(xiě)成的。為了用好這些現(xiàn)有代碼,C#通過(guò)P/Invoke提供了對(duì)互操作性(調(diào)用非托管代碼)的支持。此外,C#允許使用指針,也允許執(zhí)行直接內(nèi)存操作。雖然使用了指針的代碼要求特殊權(quán)限才能運(yùn)行,但它具有與C風(fēng)格的API完全兼容的能力。 第24章:事實(shí)上,C#被設(shè)計(jì)成一種在CLI頂部工作的最有效的編程語(yǔ)言。本章討論C#程序與底層“運(yùn)行時(shí)”及其規(guī)范的關(guān)系。 希望本書(shū)能作為你建立C#專(zhuān)業(yè)能力的豐富資源,并且在精通C#后你仍能將其作為對(duì)較少使用的領(lǐng)域的參考。 馬克.米凱利斯( Mark Michaelis ) Mark Michaelis是創(chuàng)新型軟件架構(gòu)和開(kāi)發(fā)公司IntelliTect的創(chuàng)始人、首席技術(shù)架構(gòu)師和培訓(xùn)師。Mark領(lǐng)導(dǎo)著他的公司不斷進(jìn)取,同時(shí)在世界各地舉辦有關(guān)領(lǐng)導(dǎo)力或技術(shù)的會(huì)議,并代表微軟或其他客戶(hù)進(jìn)行演講。他還撰寫(xiě)了大量文章和書(shū)籍,并且是東華盛頓大學(xué)的客座教授、Spokane .NET用戶(hù)組的創(chuàng)始人,以及每年一屆的TEDx Coeur d'Alene活動(dòng)的聯(lián)合組織者。 作為世界知名的C#專(zhuān)家,Mark自2007年以來(lái)一直擔(dān)任微軟區(qū)域總監(jiān),并榮任微軟MVP 超過(guò)25年。 Mark擁有伊利諾伊大學(xué)哲學(xué)專(zhuān)業(yè)文學(xué)學(xué)士學(xué)位和伊利諾伊理工大學(xué)計(jì)算機(jī)科學(xué)碩士學(xué)位。 第1章 C# 概述 / 1 1.1 Hello, World / 2 1.2 C#語(yǔ)法基礎(chǔ) / 9 1.3 使用變量 / 16 1.4 控制臺(tái)輸入和輸出 / 18 1.5 托管執(zhí)行和CLI / 24 1.6 多個(gè).NET框架 / 28 1.7 小結(jié) / 30 第2章 數(shù)據(jù)類(lèi)型 / 31 2.1 基本數(shù)值類(lèi)型 / 31 2.2 更多基本類(lèi)型 / 38 2.3 數(shù)據(jù)類(lèi)型轉(zhuǎn)換 / 49 2.4 小結(jié) / 55 第3章 更多數(shù)據(jù)類(lèi)型 / 56 3.1 類(lèi)型的劃分 / 56 3.2 將變量聲明為可空 / 58 3.3 隱式類(lèi)型的局部變量 / 62 3.4 元組 / 64 3.5 數(shù)組 / 68 3.6 小結(jié) / 82 第4章 操作符和控制流程 / 83 4.1 操作符 / 83 4.2 控制流程概述 / 95 4.3 代碼塊 / 99 4.4 代碼塊、作用域和聲明空間 / 101 4.5 布爾表達(dá)式 / 102 4.6 關(guān)于null的編程 / 107 4.7 按位操作符 / 112 4.8 控制流程語(yǔ)句 / 116 4.9 跳轉(zhuǎn)語(yǔ)句 / 124 4.10 C#預(yù)處理器指令 / 129 4.11 小結(jié) / 135 第5章 方法和參數(shù) / 136 5.1 方法的調(diào)用 / 137 5.2 方法的聲明 / 141 5.3 using指令 / 145 5.4 Main()的返回值和參數(shù) / 149 5.5 高級(jí)方法參數(shù) / 151 5.6 遞歸 / 159 5.7 方法重載 / 162 5.8 可選參數(shù) / 164 5.9 用異常實(shí)現(xiàn)基本錯(cuò)誤處理 / 167 5.10 小結(jié) / 178 第6章 類(lèi) / 179 6.1 類(lèi)的聲明和實(shí)例化 / 182 6.2 實(shí)例字段 / 184 6.3 實(shí)例方法 / 186 6.4 使用this關(guān)鍵字 / 187 6.5 訪(fǎng)問(wèn)修飾符 / 193 6.6 屬性 / 194 6.7 構(gòu)造函數(shù) / 207 6.8 不可空引用類(lèi)型屬性與構(gòu)造函數(shù) / 214 6.9 可空特性 / 217 6.10 解構(gòu)函數(shù) / 219 6.11 靜態(tài)成員 / 220 6.12 擴(kuò)展方法 / 228 6.13 封裝數(shù)據(jù) / 229 6.14 嵌套類(lèi) / 231 6.15 分部類(lèi) / 233 6.16 小結(jié) / 236 第7章 繼承 / 237 7.1 派生 / 238 7.2 重寫(xiě)基類(lèi) / 244 7.3 抽象類(lèi) / 253 7.4 所有類(lèi)都從System.Object派生 / 258 7.5 用is操作符進(jìn)行模式匹配 / 259 7.6 switch語(yǔ)句中的模式匹配 / 264 7.7 避免對(duì)多態(tài)類(lèi)對(duì)象使用模式匹配 / 265 7.8 小結(jié) / 267 第8章 接口 / 268 8.1 接口概述 / 269 8.2 通過(guò)接口實(shí)現(xiàn)多態(tài)性 / 270 8.3 接口實(shí)現(xiàn) / 274 8.4 在實(shí)現(xiàn)類(lèi)和接口之間轉(zhuǎn)換 / 278 8.5 接口繼承 / 278 8.6 多接口繼承 / 280 8.7 接口上的擴(kuò)展方法 / 281 8.8 版本升級(jí) / 283 8.9 擴(kuò)展方法與默認(rèn)接口成員 / 295 8.10 比較接口和抽象類(lèi) / 296 8.11 比較接口和特性 / 297 8.12 小結(jié) / 297 第9章 值類(lèi)型 / 298 9.1 結(jié)構(gòu) / 301 9.2 裝箱 / 305 9.3 枚舉 / 311 9.4 小結(jié) / 319 第10章 合式類(lèi)型 / 321 10.1 重寫(xiě)object的成員 / 321 10.2 操作符重載 / 331 10.3 引用其他程序集 / 337 10.4 類(lèi)型封裝 / 342 10.5 定義命名空間 / 343 10.6 XML注釋 / 346 10.7 垃圾回收 / 349 10.8 資源清理 / 352 10.9 推遲初始化 / 363 10.10 小結(jié) / 365 第11章 異常處理 / 366 11.1 多異常類(lèi)型 / 366 11.2 捕捉異常 / 368 11.3 重新拋出現(xiàn)有異常 / 370 11.4 常規(guī)catch塊 / 371 11.5 異常處理規(guī)范 / 372 11.6 自定義異常 / 374 11.7 重新拋出包裝的異常 / 377 11.8 小結(jié) / 380 第12章 泛型 / 381 12.1 如果C#沒(méi)有泛型 / 381 12.2 泛型類(lèi)型概述 / 386 12.3 約束 / 395 12.4 泛型方法 / 407 12.5 協(xié)變性和逆變性 / 411 12.6 泛型的內(nèi)部機(jī)制 / 416 12.7 小結(jié) / 419 第13章 委托和Lambda表達(dá)式 / 420 13.1 委托概述 / 421 13.2 聲明委托類(lèi)型 / 424 13.3 Lambda表達(dá)式 / 430 13.4 匿名方法 / 435 13.5 委托沒(méi)有結(jié)構(gòu)相等性 / 436 13.6 外部變量 / 438 13.7 表達(dá)式樹(shù) / 441 13.8 小結(jié) / 447 第14章 事件 / 448 14.1 使用多播委托實(shí)現(xiàn)Publish-Subscribe模式 / 449 14.2 理解事件 / 460 14.3 小結(jié) / 468 第15章 支持標(biāo)準(zhǔn)查詢(xún)操作符的集合接口 / 469 15.1 集合初始化器 / 470 15.2 IEnumerable使類(lèi)成為集合 / 472 15.3 標(biāo)準(zhǔn)查詢(xún)操作符 / 476 15.4 匿名類(lèi)型之于LINQ / 503 15.5 小結(jié) / 509 第16章 使用查詢(xún)表達(dá)式的LINQ / 510 16.1 查詢(xún)表達(dá)式概述 / 510 16.2 查詢(xún)表達(dá)式只是方法調(diào)用 / 525 16.3 小結(jié) / 526 第17章 構(gòu)建自定義集合 / 528 17.1 更多集合接口 / 529 17.2 主要集合類(lèi) / 530 17.3 提供索引器 / 544 17.4 返回null或者空集合 / 547 17.5 迭代器 / 547 17.6 小結(jié) / 559 第18章 反射、特性和動(dòng)態(tài)編程 / 560 18.1 反射 / 560 18.2 nameof操作符 / 569 18.3 特性 / 571 18.4 使用動(dòng)態(tài)對(duì)象進(jìn)行編程 / 585 18.5 小結(jié) / 592 第19章 多線(xiàn)程概述 / 594 19.1 多線(xiàn)程基礎(chǔ) / 595 19.2 異步任務(wù) / 600 19.3 取消任務(wù) / 614 19.4 使用System.Threading / 618 19.5 總結(jié) / 619 第20章 基于任務(wù)的異步模式編程 / 620 20.1 同步執(zhí)行高延遲操作 / 621 20.2 使用TPL實(shí)現(xiàn)異步執(zhí)行高延遲操作 / 623 20.3 使用async/await實(shí)現(xiàn)基于任務(wù)的異步模式 / 627 20.4 異步返回值ValueTask 20.5 異步流 / 633 20.6 IAsyncDisposable接口以及await using聲明和語(yǔ)句 / 637 20.7 使用LINQ和IAsync-Enumerable / 637 20.8 返回void的異步方法 / 639 20.9 異步Lambda表達(dá)式和本地函數(shù) / 642 20.10 任務(wù)調(diào)度器和同步上下文 / 647 20.11 在Windows UI程序中使用async/await / 649 20.12 小結(jié) / 652 第21章 并行迭代 / 653 21.1 并行執(zhí)行循環(huán)迭代 / 653 21.2 并行執(zhí)行LINQ查詢(xún) / 661 21.3 小結(jié) / 666 第22章 線(xiàn)程同步 / 667 22.1 線(xiàn)程同步的意義 / 668 22.2 計(jì)時(shí)器 / 689 22.3 小結(jié) / 691 第23章 平臺(tái)互操作性和不安全代碼 / 692 23.1 平臺(tái)調(diào)用 / 693 23.2 指針和地址 / 703 23.3 通過(guò)委托執(zhí)行不安全代碼 / 710 23.4 小結(jié) / 711 第24章 公共語(yǔ)言基礎(chǔ)結(jié)構(gòu) / 712 24.1 CLI的定義 / 712 24.2 CLI的實(shí)現(xiàn) / 713 24.3 .NET Standard / 715 24.4 基類(lèi)庫(kù) / 716 24.5 將C#編譯成機(jī)器碼 / 716 24.6 運(yùn)行時(shí) / 717 24.7 程序集、清單和模塊 / 720 24.8 公共中間語(yǔ)言 / 722 24.9 公共類(lèi)型系統(tǒng) / 722 24.10 公共語(yǔ)言規(guī)范 / 723 24.11 元數(shù)據(jù) / 723 24.12 .NET Native和AOT編譯 / 724 24.13 小結(jié) / 724
你還可能感興趣
我要評(píng)論
|