第1章 C# 和 .NET 框架 筆記

第1章 C# 和 .NET 框架

1.1 在 .NET 之前

C#為在.NET框架上開發程序而設計的編程語言。

MFC(Microsoft Foundation Class,微軟基礎類庫)

微軟公司提供的一個類庫,以 C++ 類的形式封裝了 Windows 的 API,并包含一個應用程序框架,以減少應用程序開發人員的工作量。其中包含的類包含大量 Windows 句柄封裝類和很多 Windows 的內建控件和組件的封裝類。

COM(Component Object Model,組件對象模型)

基于 Windows 平臺的一套組件對象接口標準,由一組構造規范和組件對象庫組成。組件對象不使用方法而用接口來描述自身。

1.2 .NET 時代

.NET 框架是一種面向對象的環境,主要特點:

  • 多平臺:可以在各種計算機上運行。
  • 行業標準:使用行業標準的通信協議,如 XML、HTTP、SOAP、JSON 和 WSDL。
  • 安全性:提供安全的執行環境,即使有來源可疑的代碼存在。

1.2.1 .NET框架組成

.NET框架由三部分組成:CLR(Common Language Runtime,公共語言運行庫)、BCL(Base Class Library,基類庫)、編程工具。

CLR在運行時管理程序的執行,主要內容有

  • 內存管理和垃圾收集;
  • 代碼安全驗證;
  • 代碼執行、線程管理及異常處理。

BCL(Base Class Library,基類庫)是 .NET 框架使用的一個大類庫,可以在程序中使用。

編程工具包括編碼和調試需要的一切,主要包括:

  • 集成開發環境 IDE

  • .NET兼容的編譯器

  • 調試器

  • Web開發服務器端技術

1.2.2 大大改進的編程環境

.NET主要特點及好處

1.面向對象的開發環境

CLR、BCL 和 C# 完全面向對象,形成良好的集成環境。

系統為本地程序和分布式系統都提供了一直的、面向對象的編程模型。

2.自動垃圾收集

GC(Garbage Collector,垃圾收集器)自動管理內存,自動刪除程序不再訪問的對象。

3.互操作性

  • 允許不同的 .NET 語言編寫的軟件模塊無縫交互。
    只要遵循一定的規則,.NET 語言的程序可以相互使用其他 .NET 語言寫的類;
    能夠很容易集成不同編程語言生成的模塊,.NET 框架也被稱為“語言無關”。

  • 提供平臺調用特性(Platform Invoke,P/Invoke),允許 .NET 代碼調用非 .NET 代碼。
    .NET 框架能與 COM 組件相互調用。

4.不需要COM

擺脫了COM的束縛

5.簡化的部署

不需要使用注冊表注冊。
提供并行執行的特性,允許 DLL 不同版本在同一臺機器上存在。

6.類型安全性

CLR 檢查并確保參數及其他數據對象的類型安全。

7.基類庫

.NET 框架提供龐大的基礎類庫(BCL),有時也稱為 FCL(Framework Class Library,框架類庫)。

主要包括:

通用基礎類

集合類

線程和同步類 - 用于創建多線程程序

XML類 - 用于創建、讀寫XML文檔

1.3 編譯成 CIL

.NET 語言的編譯器接受源代碼文件,生成名為程序集的輸出文件

程序集里的代碼,不是本機代碼,而是CIL(Common Intermediate Language,公共中間語言)的中間語言。

程序集 主要包含:

程序的 CIL;
程序中使用的類型的元數據;
對其他程序集引用的元數據。

1.4 編譯成本機代碼并執行

程序集的 CIL 直到被調用運行時才會被編譯成本機代碼,運行時執行的步驟:
1.檢查程序集的安全特性;
2.在內存中分配空間;
3.把程序集中的可執行代碼發送給 JIT(Just-In-Time,即時編譯器),把其中一部分內容編譯為本機代碼。

程序集中的可執行代碼只在需要的時候由 JIT 編譯,之后被緩存起來供后續使用。不被調用的代碼不會被編譯為本機代碼,被調用的代碼只會被編譯一次。

一旦 CIL 被編譯為本機代碼,CLR 就在運行時對它進行管理,如釋放無主內存、檢查數組邊界、檢查參數類型和管理異常等。

托管代碼:由 .NET 框架編寫的代碼,需要 CLR。

非托管代碼:不在 CLR 控制之下運行的代碼,如 C/C++、DLL。

編譯和執行過程

源文件 → 編譯器 → 程序集 → JIT編譯器 → 本機代碼 → 操作系統

1.5 CLR

CLR 是 .NET 框架的核心組件,位于操作系統的頂層,負責管理程序的執行、自動垃圾收集、安全和認證

1.6 CLI

CLI(Common Language Infrastructure,公共語言基礎結構)

一組 .NET 標準,將 .NET 框架的所有組件連接成一個內聚、一致的系統,詳細說明了所有軟件都必須遵守的規則和約定

主要組成部分:

1.CTS(Common Type System,公共類型系統)

定義了在托管代碼中一定會使用的類型的特征,如

定義了一組豐富的內置類型,及每種類型固有、獨有的特性;
.NET 兼容編程語言提供的類型,通常映射到 CTS 中已定義的內置類型集的某一個特殊子集;
所有類型都繼承 Object;
可以確保系統類型和用戶定義類型能被任何 .NET 兼容的語言所使用。

2.CLS(Common Language Specification,公共語言規范)

詳細說明了 .NET 兼容編程語言的規則、屬性和行為,包括數據類型、類結構和參數傳遞。

1.7 各種縮寫

Common Intermediate Language, CIL 公共中間語言

Common Language Infrastructure, CLI 公共語言基礎結構

Common Type System, CTS 公共類型系統

Common Language Standard, CLS 公共語言規范

Common Language RunTime CLR 公共語言運行庫

Garbage Collect,GC 垃圾收集器

Just-In-Time JIT 即時編譯器

Base Class Library BCL 基類庫

1.8 C# 的演化

C#最新版本 13.0,本書中 對應版本是7.0

1.9 C# 和 Windows 的演化

C#是一門優雅的語言

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

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

相關文章

Django全棧開發實戰與架構思考

一、框架選型與開發范式 作為Python生態最成熟的Web框架,Django的"電池全包"理念在2.3版本后得到更徹底的貫徹。項目初期通過django-admin startproject生成的腳手架已包含: 自動化ORM遷移系統 內置Admin后臺管理界面 基于WSGI的中間件管道…

微服務--Gateway網關

1. Gateway簡介 Gateway網關是微服務架構中不可或缺的組件,是微服務架構中的統一入口,它作為所有客戶端請求的第一道防線,負責請求的路由、過濾和聚合。 Gateway核心功能 路由(Routing) 根據請求路徑、Header、參數等將請求路由到不同微服…

區塊鏈與人工智能的融合:從信任到智能的IT新引擎

在信息技術(IT)的飛速發展中,兩大顛覆性技術的交匯正掀起一場革命——區塊鏈與人工智能(AI)的融合。2025年,隨著數據隱私需求的激增、去中心化應用的爆發以及企業對可信智能系統的追求,區塊鏈與…

Javascript什么是原型和原型鏈,八股文

原型:函數都有prototype屬性,稱之為原型,也稱為原型對象 原型可以放一些屬性和方法,共享給實例對象使用 原型可以做繼承 原型鏈:對象都有__proto__屬性,這個屬性指向它的原型對象,原型對象也是對象,也有__proto__屬性,指向原型對象的原型對象,這樣一層一…

生日悖論理論及在哈希函數碰撞中的應用

目錄 一、生日悖論(Birthday Paradox)介紹 二、生日悖論的數學解釋 (一)計算所有人生日都不同的概率 數學推導 示例計算 (二)至少有兩個人生日相同的概率 三、哈希函數碰撞與生日悖論的關系思考 &a…

探索數據的力量:Elasticsearch中指定鏈表字段的統計查詢記錄

目錄 一、基本的數據結構說明 二、基本的統計記錄 (一)統計當前索引中sellingProducts的所有類型 (二)檢索指定文檔中sellingProducts的數據總量 (三)檢索指定文檔中sellingProducts指定類型的數量統計…

細節致勝:如何重塑反向海淘用戶體驗

在反向海淘的激烈競爭中,客戶體驗已成為決定勝負的關鍵。一次流暢的購物旅程、一個貼心的服務細節,都可能讓海外消費者成為品牌的忠實傳播者。易境通代購商城系統正是以極致體驗為核心,通過精細化服務管理,助力企業贏得用戶口碑與…

Docker 分階段構建

Docker 分階段構建 Docker 分階段構建(Multi-stage Build)是一種高效的鏡像構建技術,允許在一個 Dockerfile 中使用多個構建階段,每個階段可以使用不同的基礎鏡像,最終只保留需要的文件,從而顯著減小鏡像體…

人工智能學習23-BP-圖像編碼

人工智能學習概述—快手視頻 人工智能學習23-BP-圖像編碼—快手視頻

k8s的開篇學習和安裝

k8s的開篇學習 學習網站 參考資料 1。 K8S能干什么 [概述 | Kubernetes](https://kubernetes.io/zh-cn/docs/concepts/overview/#why-you-need-kubernetes-and-what-can-it-do)需要開代理 2。docker資料 https://docs.docker.com/get-started/3.prometheus資料 https://promet…

CS144 lab0: warmup

Lab 0: networking warmup 1. 環境 依賴配置 sudo apt update && sudo apt install git cmake gdb build-essential clang \clang-tidy clang-format gcc-doc pkg-config glibc-doc tcpdump tsharkg13配置 ppa中科大源 # deb https://ppa.launchpadcontent.net/ubu…

StarRocks

StarRocks 是一個高性能的 分布式 MPP(Massively Parallel Processing)數據庫,主要用于 實時數據分析(Real-Time Analytics),是新一代的 OLAP 數據庫,對標 ClickHouse、Apache Doris 等。 ?? 一、StarRocks 是什么? StarRocks 是一個面向實時分析場景、支持高并發、高…

8088單板機8259中斷的軟件觸發測試

1.工作原理 8086和8088的中斷設計的是很巧妙的,比如給8259的IR1配置了一個中斷,中斷號為21H,那么當真個引腳出現高電平的時候,就會觸發相應上的中斷響應。但,這不是唯一能夠觸發21H中斷的方法,還可以通過軟…

TC3xx中PFLASH緩存對XCP標定常量的影響

1、TC3xx中PFLASH緩存(Cache)對XCP標定的影響 XCP的映射用到TC3XX的Overlay功能需要使用一段Pflash內存。 Pflash數據有兩個段區。分別為0x80000000和0xA0000000為起始地址的PFLASH段。 如上,兩段數據的區別是一個段8有CACHE緩存,…

代碼審計服務:如何解決誤報與漏報難題,保障軟件安全?

代碼審計服務在保障軟件質量、安全合規等方面扮演著關鍵角色,特別是在數字化浪潮席卷而來的今天,其重要性日益顯著。它能揭露代碼中的不足,進而為軟件開發提供有力的效率和安全性保障。 誤報與漏報難題 常規的代碼審查工具,其錯…

web方向第一次考核內容

一.考核內容 Web組大一下考核之HTML、CSS 1.為什么要清除浮動(4),清除浮動的方法有哪些?(6)(至少兩種) 2.怎么實現左邊左邊寬度固定右邊寬度自適應的布局?(10) 3.講講flex:1;(10) 4.怎么實現移動端適配不同…

HarmonyOS 5 Cordova有哪些熱門插件?

以下是 HarmonyOS 5 環境下 Cordova 的熱門插件及核心代碼實現(綜合實際開發場景高頻使用): 一、核心工具類插件 1. ?高性能圖片壓縮插件? ?功能?:直接調用鴻蒙 ImageSource API 實現硬件級加速壓縮 ?代碼實現?&#xff…

Cesium圓錐漸變色實現:融合頂點著色器、Canvas動態貼圖與靜態紋理的多方案整合

在Cesium中渲染圓錐體時,無論采用頂點著色器、Canvas動態貼圖還是靜態圖片貼圖,其漸變色均需滿足以下條件: 圓形結構:漸變范圍限定在圓錐底面的圓形區域內。徑向擴散:顏色從圓心向外逐步變化(如紅→黃→藍…

周末復習1

質量管理包括質量規劃,質量保證,質量控制。質量管理體系要定期執行內部審核和管理評審。二者都屬于質量保證過程。 實施質量保證的方法很多,過程分析屬于實施質量保證的常用方法。 采購管理過程包括編制采購計劃,實施采購,控制采購和結束采購…

英飛凌亮相SEMICON China 2025:以SiC、GaN技術引領低碳化與數字化未來

在剛剛落幕的SEMICON China 2025上,全球半導體行業再度匯聚上海,共同探討產業未來。本屆展會以“跨界全球?心芯相聯”為主題,覆蓋芯片設計、制造、封測、設備及材料等全產業鏈,充分展現了半導體技術的最新突破與創新趨勢。 作為…