- C#編程魔法書
- 施懿民
- 1528字
- 2021-07-23 16:21:42
前言
為什么要寫這本書
C#是一門上手容易且功能強大的編程語言,支持很多編程場景。在很長一段時間內,C#與.NET框架只能運行在Windows平臺上,所以在移動互聯網時代到來后很多公司選擇了可以在開源Linux平臺上運行的Java語言,因此很多程序員認為C#不適合互聯網開發。
隨著.NET Core平臺的發布以及微軟開放源代碼,在Linux、macOS等系統上也可以運行C#程序了,這樣就大大擴展了C#的使用場景。
- 互聯網后端程序:可基于ASP.NET MVC或者ASP.NET Web API等框架開發。
- 窗體程序:可基于Windows平臺的Winform和WPF等框架,Linux平臺的Mono和Avalonia等框架,以及針對macOS Visual Studio開發。
- 桌游、手游等游戲程序:可基于Unity3D開發。
- 物聯網開發:使用C#比其他編程語言更為便利。
- 人工智能編程:微軟提供了開源的跨平臺框架ML.NET,并且提供了TensorFlow框架的開源.NET版本。
出于對.NET框架和C#的熱愛,筆者決定寫一本關于C#的書。本書主要以互聯網后端編程的應用場景為例介紹C#語言的各種特性,書中的示例代碼盡量只使用.NET框架實現。
讀者對象
本書采取由淺入深的編寫思路,適合的讀者對象包括:
- 零基礎的編程愛好者
- 有其他語言編程經驗的開發工程師
- 中級以下C#開發工程師
- 開設相關課程的大專院校師生
本書特色
很多C#相關參考書中的代碼示例僅僅局限于要講解的知識點,而且大多數例子非常簡單,讓讀者學完后不知如何實踐,因此筆者在寫作開始就將示例代碼與實際業務場景結合作為第一考量因素。本書主要通過高頻交易程序和交易所撮合引擎兩個示例程序來配合介紹C#編程,內容由淺入深,示例程序的功能也是逐漸豐富的,相信會讓讀者受到啟發。
如何閱讀本書
本書共有8章,各章的主要內容如下。
第1章介紹在Windows和Linux平臺安裝和使用.NET框架并進行編程的方法。
第2章介紹常用的.NET框架的基本類庫,讓讀者能夠配合C#的語法編寫一些基本的文件處理、編碼國際化等程序。
第3章通過封裝交易所接口的實際案例,介紹面向對象、依賴注入等常見的編程思想。
第4章介紹反射技術、代碼生成和C#對動態語言的支持。由于近幾年人工智能的快速發展,Python這樣的動態語言受到了越來越多的關注。筆者希望通過本章內容向讀者展示C#語言對動態語言這種編程范式的強大支持。而代碼生成技術使用得當可以大大提高開發效率。
第5章介紹C#讀寫數據庫的方法,特別是從代碼反向生成數據庫的方法,并介紹了在后續版本迭代中自動對數據庫結構執行升級、降級操作的方法。
第6章通過多線程版的高頻交易程序來介紹多線程編程、同步機制、無鎖編程等概念。
第7章主要介紹并行編程的技巧及其與多線程編程的異同。
第8章介紹如何使用消息隊列進行簡單的分布式處理,并通過一個交易所撮合引擎案例介紹分布式編程的基本技巧。
在示例代碼的頭部注釋里,筆者添加了相關的編譯和運行命令,有一些較為復雜的配置和編譯步驟附在源碼目錄文件夾的README.md文件中。讀者可以從GitHub(https://github.com/shiyimin/csharpmagic)下載本書的示例代碼。
由于篇幅限制,筆者對原稿做了一些裁減,并會將這部分內容上傳到GitHub倉庫,存放在名為“裁減章節”的文件夾中。
勘誤和支持
需要特別說明的是,筆者開始寫作時C#最新版本是7.1,完稿時C# 9.0版已經發布了,因此本書未能及時引入C# 8.0和C# 9.0的功能特性。值得欣慰的是,C#新版本的功能在微軟的官方文檔中有詳細描述,因此新版本的發布并不影響讀者通過本書深入了解C#的豐富特性。
.NET框架的功能非常強大,本書只介紹了其在互聯網后臺進行開發的場景。對于其他編程場景,有興趣的讀者可以添加微信shi_yi_min(備注“C#編程魔法書讀者”)或發送郵件至郵箱shiyimin@vowei.com來與我一起討論。由于筆者水平有限,書中難免會出現一些錯誤或者表述不準確的問題,懇請讀者批評指正。
致謝
從2017年12月底高婧雅編輯聯系我寫作本書開始,到2020年12月27日完稿,本書歷時3年。感謝在這么長的時間內一直支持我的高婧雅編輯以及我的家人,特別感謝我的愛人。
謹以此書獻給我最親愛的家人,以及眾多熱愛C#和.NET編程的朋友們!
- Learning ArcGIS Pro 2
- C語言程序設計案例式教程
- Java程序設計
- 微信小程序項目開發實戰
- Getting Started with Gulp
- 大數據分析與應用實戰:統計機器學習之數據導向編程
- PLC應用技術(三菱FX2N系列)
- 利用Python進行數據分析
- OpenGL Data Visualization Cookbook
- Learning Modular Java Programming
- Learning Material Design
- 從零開始學Python網絡爬蟲
- Machine Learning for OpenCV
- Robot Framework Test Automation
- Selenium WebDriver Practical Guide