C#初級教程(1)——C# 與.NET 框架:探索微軟平臺編程的強大組合

圖片來源:

https://www.lvhang.site/docs/dotnettimeline

即夢AI - 一站式AI創作平臺


一、歷史發展脈絡

????????在早期的微軟平臺編程中,常用的編程語言有 Visual BasicCC++。到了 20 世紀 90 年代末,Win32 API、MFC(Microsoft Foundation Classes,微軟基礎類庫)以及 COM(Component Object Model,組件對象模型)在軟件開發中發揮著重要作用 。不過,這些技術存在一些局限性,比如開發難度較大、跨平臺性差等問題。

????????直到 2002 年,微軟發布了第一個.NET 框架,這一框架具有多平臺特性、符合行業標準且安全性高,為開發者帶來了全新的開發體驗。它像是一個強大的基礎架構,為后續的編程工作奠定了堅實基礎。


二、編程工具與生態

(一)豐富的編程工具

  1. Visual Studio:這是一款集成開發環境(IDE),它為開發者提供了一站式的開發體驗。無論是創建項目、編寫代碼,還是調試程序,都能在這個工具中高效完成。它就像是一個功能齊全的工作間,開發者在這里可以得心應手地進行各種開發操作。

  2. .NET 兼容的編譯器:包括 C#、VB.NET、F# 等編譯器。這些編譯器可以將不同語言編寫的代碼轉換為可執行的程序。比如 C# 編譯器,它能夠把 C# 代碼編譯成計算機可以理解和運行的形式。

  3. 調試器:在開發過程中,代碼難免會出現錯誤,調試器就是幫助開發者找出并解決這些錯誤的重要工具。它可以逐行執行代碼,查看變量的值,分析程序的執行流程,讓開發者快速定位問題所在。

  4. 網站開發技術:ASP.NET和 WCF(Windows Communication Foundation)在網站開發領域應用廣泛。ASP.NET用于構建動態網頁,WCF 則專注于創建分布式應用程序,實現不同系統之間的通信。
    ?

(二).NET 框架核心組件

  1. 基類庫(BCL):Base Class Library,它是.NET 框架的重要組成部分,包含了豐富的類。通用基礎類用于文件操作、字符串操作等;集合類可以方便地管理列表、字典等數據結構;線程和同步類為多線程編程提供支持;XML 類則幫助開發者創建、讀取和操作 XML 文檔。有了 BCL,開發者無需從頭編寫基礎功能代碼,大大提高了開發效率。

  2. 公共語言運行庫(CLR):CLR 是.NET 框架的運行時環境,負責管理內存、處理異常、進行垃圾收集等重要任務。它就像是一個幕后管家,默默地為程序的穩定運行保駕護航。托管代碼是用.NET 框架編寫的代碼,需要在 CLR 環境下運行;而非托管代碼,像 Win32 C/C++ DLL,則不在 CLR 控制范圍內。


三、編譯與運行機制

(一)編譯過程

????????.NET 源文件可以是 C#、VB 等多種語言編寫的。編譯器會將這些源文件編譯成程序集,程序集的形式可以是 dll 文件(動態鏈接庫)或者 exe 文件(可執行文件)。在編譯過程中,會生成 CIL(Common Intermediate Language,公共中間語言)。CIL 是一種中間表示形式,它與具體的硬件和操作系統無關,這使得.NET 程序具有更好的跨平臺潛力。

(二)運行過程

????????程序運行時,CLR 會發揮重要作用。首先,JIT(Just-In-Time,即時)編譯器會將 CIL 代碼轉換成本機代碼,也就是所在系統可以直接識別運行的代碼。然后,CLR 會利用自身的內存管理、異常處理等功能,保證程序的穩定運行,同時還會調用操作系統服務,實現與底層系統的交互。


四、C# 的版本演化

C# 從誕生以來不斷發展,每個版本都帶來了令人矚目的新特性:

  1. C# 1.0:作為初始版本,奠定了 C# 語言的基礎框架,為后續發展提供了基石。

  2. C# 2.0:帶來了一些重要特性,進一步豐富了 C# 的編程能力,使開發者在編寫代碼時有了更多選擇。

  3. C# 3.0:引入了 LINQ(Language Integrated Query,語言集成查詢),這一特性極大地簡化了數據查詢操作,讓開發者可以更方便地處理各種數據源。

  4. C# 4.0:增加了命名參數和可選參數,使方法調用更加靈活,提高了代碼的可讀性和可維護性。

  5. C# 5.0:異步特性成為焦點,它讓開發者能夠更輕松地編寫異步代碼,提升了程序的性能和響應速度,特別是在處理 I/O 操作和網絡請求時優勢明顯。


五.結語

????????希望通過今天的分享,大家對 C# 和.NET 框架有了更深入的理解,也期待大家在未來的編程實踐中充分利用它們的優勢,創造出更多優秀的軟件作品。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/896076.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896076.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896076.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【接口封裝】——13、登錄窗口的標題欄內容設置

解釋&#xff1a; 1、封裝內容&#xff1a;圖標、文本內容、寬度 2、ui.iconLabel&#xff1a;在UI文件中的自定義命名 3、引入頭文件&#xff1a;#include<qpixmap.h> 函數定義&#xff1a; #pragma once#include <QWidget> #include "ui_TitleBar.h"cl…

DeepSeek全生態接入指南:官方通道+三大云平臺

DeepSeek全生態接入指南&#xff1a;官方通道三大云平臺 一、官方資源入口 1.1 核心交互平臺 &#x1f5a5;? DeepSeek官網&#xff1a; https://chat.deepseek.com/ &#xff08;體驗最新對話模型能力&#xff09; 二、客戶端工具 OllamaChatboxCherry StudioAnythingLLM …

web安全:跨站請求偽造 (CSRF)

跨站請求偽造 (CSRF) ? 跨站請求偽造&#xff08;CSRF&#xff0c;Cross-Site Request Forgery&#xff09; 是一種網絡攻擊方式&#xff0c;攻擊者誘使受害者在未經其授權的情況下執行特定操作。CSRF 利用受害者已登錄的身份和瀏覽器自動發送的認證信息&#xff08;如 Cooki…

前端ES面試題及參考答案

目錄 let/const 與 var 的區別?TDZ 是什么? 箭頭函數與普通函數的區別?箭頭函數能否作為構造函數? 模板字符串的嵌套表達式和標簽模板用法? 解構賦值的應用場景及對象 / 數組解構差異? 函數參數默認值的生效條件及暫時性死區問題? 展開運算符(...)在數組 / 對象中…

Windows 圖形顯示驅動開發-查詢 WDDM(3.2) 功能支持和啟用

查詢 Windows 顯示驅動程序模型 (WDDM) 功能的支持和啟用。 其中介紹了&#xff1a; 用戶模式和內核模式顯示驅動程序&#xff08;UMD 和 KMD&#xff09;如何查詢 OS&#xff0c;以確定 WDDM 功能在系統上是否受支持和已啟用。 OS 如何確定驅動程序是否支持特定的 WDDM 功能…

MySQL InnoDB 存儲引擎的索引詳解

在 MySQL 中&#xff0c;InnoDB 是最常用的存儲引擎&#xff0c;它支持事務、行級鎖和外鍵約束等功能&#xff0c;而索引則是提升數據庫查詢性能的關鍵。在 InnoDB 存儲引擎中&#xff0c;索引不僅僅是提高查詢速度的工具&#xff0c;還是數據庫的核心組成部分之一。本文將詳細…

基于Spring Boot的RabbitMQ延時隊列技術實現

文章目錄 基于Spring Boot的RabbitMQ延時隊列技術實現延時隊列應用場景基本概念實現延時隊列添加依賴基礎配置配置類設計消息生產者消息消費者 兩種TTL設置方式 訂單超時關閉實例訂單服務消息處理 延遲消息插件安裝插件配置延遲交換機 基于Spring Boot的RabbitMQ延時隊列技術實…

畢業項目推薦:基于yolov8/yolov5/yolo11的番茄成熟度檢測識別系統(python+卷積神經網絡)

文章目錄 概要一、整體資源介紹技術要點功能展示&#xff1a;功能1 支持單張圖片識別功能2 支持遍歷文件夾識別功能3 支持識別視頻文件功能4 支持攝像頭識別功能5 支持結果文件導出&#xff08;xls格式&#xff09;功能6 支持切換檢測到的目標查看 二、數據集三、算法介紹1. YO…

【智能客服】ChatGPT大模型話術優化落地方案

本文原創作者:姚瑞南 AI-agent 大模型運營專家,先后任職于美團、獵聘等中大廠AI訓練專家和智能運營專家崗;多年人工智能行業智能產品運營及大模型落地經驗,擁有AI外呼方向國家專利與PMP項目管理證書。(轉載需經授權) 目錄 一、項目背景 1.1 行業背景 1.2 業務現…

STM32的HAL庫開發---單通道ADC采集(DMA讀取)實驗

一、實驗簡介 正常單通道ADC采集順序是先開啟ADC采集&#xff0c;然后等待ADC轉換完成&#xff0c;也就是判斷EOC位置1&#xff0c;然后再讀取數據寄存器的值。 如果配置了DMA功能&#xff0c;在EOC位被硬件置1后&#xff0c;自動產生DMA請求&#xff0c;然后DMA進行數據搬運…

編譯原理基礎(1)

1.什么是ASCII碼&#xff1f; ASCII碼即美國信息交換標準代碼&#xff0c;是基于拉丁字母的電腦編碼系統&#xff0c;用于顯示現代英語和部分西歐語言。其7位編碼范圍0-127&#xff0c;8位擴展到0-255。字符集含控制字符&#xff08;0-31、127&#xff0c;用于控制設備或表示通…

基于 Highcharts 實現 Vue 中的答題統計柱狀圖組件

在現代 Web 開發中&#xff0c;數據可視化是一個重要的組成部分&#xff0c;而 Highcharts 是一個廣泛使用的 JavaScript 圖表庫&#xff0c;可以幫助開發者在 Web 頁面上輕松地繪制豐富的圖表。在本文中&#xff0c;我們將基于 Highcharts 創建一個用于答題統計的柱狀圖&#…

SQLAlchemyError: A transaction is already begun on this Session.

資料 sqlalchemy 事務 - 簡書 在 SQLAlchemy 中&#xff0c;事務是通過會話來管理的。當你開始一個事務&#xff08;例如使用 async with db.begin()&#xff09;&#xff0c;它會開啟一個新的事務&#xff0c;并在事務塊結束時自動提交或回滾。如果在同一個會話中&#xff0c…

Java Web開發實戰與項目——Spring Boot與Redis實現緩存管理

緩存技術在現代Web開發中至關重要&#xff0c;尤其是在高并發的環境中&#xff0c;緩存能夠有效減少數據庫訪問壓力、提高系統性能。Redis作為最流行的內存數據存儲系統之一&#xff0c;常用于緩存管理。本節將講解如何在Spring Boot項目中集成Redis&#xff0c;實現緩存管理&a…

C語言學習【1】C語言關于寄存器的封裝

目錄 1.封裝寄存的C語言的語法volatile&#xff1a;unsigned int:*pGpiobOdrvolatile unsigned int * 2.進一步C語言的封裝 在嵌入式中&#xff0c;底層一定是操作寄存器&#xff0c;我有一個理念&#xff0c;凡事一定要想清楚&#xff0c;把任何知識點融入自己的理解之中&…

#滲透測試#批量漏洞挖掘#暢捷通T+遠程命令執行漏洞

免責聲明 本教程僅為合法的教學目的而準備,嚴禁用于任何形式的違法犯罪活動及其他商業行為,在使用本教程前,您應確保該行為符合當地的法律法規,繼續閱讀即表示您需自行承擔所有操作的后果,如有異議,請立即停止本文章讀。 目錄 一、漏洞概況 二、攻擊特征 三、應急處置…

ollama 學習筆記

1. 參考博客&#xff1a;1. Ollama完整教程&#xff1a;本地LLM管理、WebUI對話、Python/Java客戶端API應用&#xff1a;https://blog.csdn.net/python122_/article/details/1409457202. https://gitee.com/ai-big-model/ollama/tree/main --》REST APIollama 離線安裝包 ollam…

ARM Linux平臺下 OpenCV Camera 實驗

一、硬件原理 1. OV2640 1.1 基本功能 OV2640 是一款低功耗、高性能的圖像傳感器&#xff0c;支持以下功能&#xff1a; 最高分辨率&#xff1a;200 萬像素&#xff08;1600x1200&#xff09;。 輸出格式&#xff1a;JPEG、YUV、RGB。 內置圖像處理功能&#xff1a;自動曝…

vue2.x中父組件通過props向子組件傳遞數據詳細解讀

1. 父組件向子組件傳遞數據的步驟 在子組件中定義 props&#xff1a; 子組件通過 props 選項聲明它期望接收的數據。props 可以是數組形式&#xff08;簡單聲明&#xff09;或對象形式&#xff08;支持類型檢查和默認值&#xff09;。 在父組件中使用子組件時綁定 props&#x…

【Gin】2:快速上手Gin框架(模版、cookie、session)

本文目錄 一、模版渲染二、自定義模版函數三、cookie四、Session五、cookie、session區別六、會話攻擊 一、模版渲染 在 Gin 框架中&#xff0c;模板主要用于動態生成 HTML 頁面&#xff0c;結合 Go 語言的模板引擎功能&#xff0c;實現數據與視圖的分離。 模板渲染是一種動態…