国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C# 圖解教程 第5版 —— 第22章 命名空間和程序集

這篇具有很好參考價(jià)值的文章主要介紹了C# 圖解教程 第5版 —— 第22章 命名空間和程序集。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

22.1 引用其他程序集

? 在許多項(xiàng)目中,會(huì)使用其他程序集的類或類型,而不僅僅是自己聲明的。這些程序集(稱為類庫(kù))可能來(lái)自 BCL 或第三方供應(yīng)商,也可以是自己創(chuàng)建的。通常這些程序集文件的名稱以 .dll 擴(kuò)展名結(jié)尾,而不是 .exe。

C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展
圖22.1 SuperLib 源代碼和結(jié)果程序集

? 假設(shè)還要寫一個(gè)名為 MyWidgets 的程序,而且想使用 SquareWidget 類。在代碼中沒有聲明類 SquareWidget,使用的是定義在 SuperLib 中的類。在編譯程序時(shí),需要給編譯器添加該引用。

C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展

? 在 Rider 中,右鍵項(xiàng)目,選擇“添加” -> “引用”,選擇下方的“添加自”按鈕,找到對(duì)應(yīng)的程序集即可。

C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展
圖22.2 Rider 中添加程序集

? 添加引用后,即可編譯 MyWidgets。

C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展
圖22.3 引用另一個(gè)程序集

mscorlib 庫(kù)

? 有一個(gè)類庫(kù),幾乎先前的每個(gè)示例中都使用了它,即包含 Console 類的類庫(kù)。該類庫(kù)被定義在 mscorlib 程序集中的 mscorlib.dll 文件里。mscorlib 包含 C# 類型及大部分 .NET 語(yǔ)言基本類型的定義,在編譯時(shí),它必須被引用,因此不顯示放在引用目錄中。

? 因此,算上 mscorlib,圖 22.3 的過程看起來(lái)更像是圖 22.4 描述的那樣。

C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展
圖22.4 引用類庫(kù)

潛在的問題

? 若想擴(kuò)展上述類的能力,使用名為 CircleWidget 的類,并將其定義在 UltraLib 的程序集中。MyWidgets 的源代碼如下,創(chuàng)建一個(gè) SquareWidget 對(duì)象和一個(gè) CircleWidget 對(duì)象,分別定義在 SuperLib 和 UltraLib 中。

C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展

? 類庫(kù) UltraLib 的源代碼如下所示,并將 UltraLib 編譯成 dll,加入到項(xiàng)目引用列表中。注意,除了 CircleWidget 類外,還聲明了一個(gè)名為 SquareWidget 的類。

C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展

? 由于兩個(gè)庫(kù)都含有名為 SquareWidget 的類,編譯時(shí)會(huì)產(chǎn)生錯(cuò)誤信息,因?yàn)榫幾g器不知道使用 SquareWidget 類的哪個(gè)版本。

C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展
圖22.5 由于程序集 SuperLib 和 UltraLib 都含有名為 SquareWidget 的類聲明,編譯器不知道該實(shí)例化哪一個(gè)

22.2 命名空間

  • 命名空間可視為一個(gè)字符串,加在類名或類型名前面,通過點(diǎn)分隔。
  • 命名空間名、分隔點(diǎn)、類名三者共同組成類的完全限定名。
  • 命名空間是共享命名空間名的一組類和類型。
C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展
圖22.6 命名空間是共享同一命名空間名的一組類型定義

? 使用命名空間將一組類型組織在一起并命名。

C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展

? 例如,創(chuàng)建 MyCorp.SuperLib 命名空間并在其中聲明 SquareWidget 類。

C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展

? 當(dāng) MyCorp 公司提供更新的程序集時(shí),可以按照如下方式修改。

C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展

? 如果 UltraLib 程序集也被使用,那么編譯過程下。

C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展
圖22.7 帶命名空間的類庫(kù)

22.2.1 命名空間名稱

  • 命名空間名稱可以是任何有效標(biāo)識(shí)符,區(qū)分大小寫。
  • 命名空間名稱可以包含任意數(shù)量的句點(diǎn)符號(hào),用于將層次化組織類型。
表22.1 來(lái)自 BCL 的命名空間示例
C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展

? 使用命名空間要點(diǎn)如下:

  1. 以公司名稱開頭。
  2. 在公司名之后跟著技術(shù)名稱。
  3. 不要與類或類型名稱相同。

22.2.2 命名空間的補(bǔ)充

  • 命名空間內(nèi),每個(gè)類型名必須有別于所有其他類型。
  • 命名空間內(nèi)的類型稱為命名空間的成員。
  • 源文件可以包含任意樹木的命名空間聲明,可以順序也可以嵌套。
C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展
圖22.8 一個(gè)源文件中的多個(gè)命名空間

22.2.3 命名空間跨文件伸展

? 命名空間是非封閉的,可以在源文件后面或其他源文件中使用。

C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展
圖22.9 命名空間可以跨源文件并編譯成單個(gè)程序集

22.2.4 嵌套命名空間

  1. 文本嵌套

    將命名空間的聲明放在一個(gè)命名空間聲明體內(nèi)部。

  2. 分離的聲明

    為嵌套命名空間創(chuàng)建單獨(dú)的聲明,但必須在聲明中使用完全限定名。

C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展
圖22.10 聲明嵌套命名空間的兩種形式是等價(jià)的

22.3 using 指令

? using 指令包含 2 大作用:

  1. using 命名空間指令。
  2. using 別名指令。

? 關(guān)于 using 指令的要點(diǎn)如下:

  • 必須放在源文件的頂端,在任何類型聲明之前。
  • 應(yīng)用于當(dāng)前源文件中的所有命名空間。

22.3.1 using 命名空間指令

? 通過在源文件頂端放置 using 命名空間指令以避免使用長(zhǎng)名稱。

C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展

? 下面的代碼使用 using 命名空間指令來(lái)描述該代碼來(lái)自 System 命名空間的類或其他類型。

C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展

22.3.2 using 別名指令

C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展

? using 別名指令允許起一個(gè)別名給:

  1. 命名空間。
  2. 命名空間捏的一個(gè)類型。
C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展
  • 前兩行告訴編譯器,Syst 是 命名空間 System 的別名,SC 是類 System.Consle 的別名。
  • Main 的第一條語(yǔ)句使用命名空間 System 的別名,第二條語(yǔ)句使用完全限定名,第三條語(yǔ)句使用類的別名。

22.3.3 using static 指令

? 使用 using static 指令引用給定命名空間中的特定類、結(jié)構(gòu)體或枚舉,以不帶任何前綴地進(jìn)行訪問。

C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展

? using static 指令指定的類本身可以不是靜態(tài)的,類中非靜態(tài)類型成員不會(huì)被 using static 指令導(dǎo)入。

22.4 程序集的結(jié)構(gòu)

? 程序集本身不包含本地機(jī)器代碼,而是包含公共中間語(yǔ)言代碼。此外,還包含即時(shí)編譯器(JIT),在運(yùn)行時(shí)將 CIL 轉(zhuǎn)換為本機(jī)代碼所需要的一切信息。程序集的文件擴(kuò)展名通常為 .exe 或 .dll。

單文件程序集

? 大部分程序集由一個(gè)單獨(dú)的文件構(gòu)成:

  1. 程序集清單。

    • 程序集標(biāo)識(shí)符。
    • 組成程序集的文件列表。
    • 一個(gè)指示程序集中內(nèi)容在哪里的地圖。
    • 關(guān)于引用的其他程序集的信息。
  2. 類型元數(shù)據(jù)。

    包含程序集中定義的所有類型的信息。

  3. CIL 中間代碼。

  4. 資源部分。

    該部分可選??梢园瑘D形或語(yǔ)言資源。

C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展
圖22.11 單文件程序集的結(jié)構(gòu)

多文件程序集

? 程序集代碼文件稱為模塊。盡管大部分程序集由單個(gè)文件構(gòu)成,但有些程序集含有多個(gè)文件。對(duì)于有多個(gè)模塊的程序集,一個(gè)文件是主模塊,其他為次要模塊。

  • 主模塊含有程序集的清單和次要模塊的引用。
  • 次要模塊的文件名以擴(kuò)展名 .netmodule 結(jié)尾。
  • 多文件程序集被視為一個(gè)單元,一起部署并一起定版。
C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展
圖22.12 多文件程序集

22.5 程序集標(biāo)識(shí)符

? 在 .NET 框架中,程序集的文件名相對(duì)不重要,更重要的是程序集的標(biāo)識(shí)符,其包含 4 個(gè)組成部分:

  1. 簡(jiǎn)單名稱。

    不帶文件擴(kuò)展名的文件名,也稱為程序集名友好名稱。

  2. 版本號(hào)。

    形式為 MajorVersion.MinorVersion.Build.Revision,例如:2.0.35.9。

  3. 文化信息。

    一個(gè)由 2 ~ 5 個(gè)字符組成的字符串,代表一種語(yǔ)言、國(guó)家或地區(qū)。例如,沒過使用的英語(yǔ)文化名是 en-US,德國(guó)使用的德語(yǔ)文化是de-DE。

  4. 公鑰。

    由程序集公司生產(chǎn)的唯一字符串(128 字節(jié))。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-800381.html

C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展
圖22.13 清單中程序集標(biāo)識(shí)符的組成部分
C# 圖解教程 第5版 —— 第22章 命名空間和程序集,C# 圖解教程 第5版,c#,開發(fā)語(yǔ)言,職場(chǎng)和發(fā)展
圖22.14 關(guān)于程序集標(biāo)識(shí)符的術(shù)語(yǔ)

22.6 強(qiáng)命名程序集(*)

22.7 私有程序集的部署(*)

22.8 共享程序集和 GAC(*)

22.9 配置文件(*)

22.10 延遲簽名(*)

到了這里,關(guān)于C# 圖解教程 第5版 —— 第22章 命名空間和程序集的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • [Unity命名空間教程]介紹Unity新自帶的命名空間UnityEngine.Pool

    [Unity命名空間教程]介紹Unity新自帶的命名空間UnityEngine.Pool

    ? 大家都知道在一些游戲中常常要?jiǎng)?chuàng)建大量的游戲?qū)ο?,如果這些對(duì)象長(zhǎng)期占用一些內(nèi)存而沒有觸發(fā)垃圾回收機(jī)制(以下簡(jiǎn)稱GC)或者過于頻繁的觸發(fā)GC就會(huì)導(dǎo)致游戲的幀數(shù)暴跌,在移動(dòng)設(shè)備直接造成卡死的現(xiàn)象,那引用對(duì)象池的概念,能讓這些游戲?qū)ο笤趧傞_始的時(shí)候就被初

    2023年04月11日
    瀏覽(26)
  • 【C#】【命名空間(namespace)】.NET6.0后支持的頂級(jí)語(yǔ)句使用問題

    創(chuàng)建C#項(xiàng)目且使用.Net6.0以上的版本時(shí),默認(rèn)code會(huì)使用頂級(jí)語(yǔ)句形式: 1、略去static void Main(String[ ] args)主方法入口; 2、隱式使用(即隱藏且根據(jù)代碼所需要的類自動(dòng)調(diào)用)其他命名空間(包括): using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Net

    2024年02月08日
    瀏覽(26)
  • unity的C#學(xué)習(xí)——命名空間的定義與訪問、using語(yǔ)句的常見用法

    在C#中,命名空間(Namespace)是一種 將類和其他相關(guān)類型組織在一起的方式 ??梢詫⒚臻g看作是一個(gè)容器,用于管理和組織類和其他類型。通過將相關(guān)的類型組織在一起,可以使代碼更加清晰和易于維護(hù)。 命名空間的主要目的是為了避免名稱沖突,使得開發(fā)人員可以 使

    2024年02月11日
    瀏覽(27)
  • 命名空間“Microsoft”中不存在類型或命名空間名“office”(是否缺少程序集引用?)

    命名空間“Microsoft”中不存在類型或命名空間名“office”(是否缺少程序集引用?)

    生成軟件的時(shí)候提示office報(bào)錯(cuò) 項(xiàng)目-引用-右擊添加引用-選擇如下圖-點(diǎn)擊確定 選擇后點(diǎn)擊重新生成即可生成成功! 如果是之前就有添加,然后再打開這個(gè)軟件顯示office報(bào)錯(cuò),就將之前引用的刪除,重新添加引用 。

    2024年02月11日
    瀏覽(41)
  • Unity 未能找到程序集或命名空間

    Unity 未能找到程序集或命名空間

    程序集定義 Assembly Definition 程序集相當(dāng)于一個(gè)文件夾。如果沒有程序集,腳本就會(huì)被默認(rèn)打包到Assembly-CSharp.dll中,這樣編譯的時(shí)候就比較浪費(fèi)時(shí)間,一旦有修改,就要整體重新編譯。將項(xiàng)目?jī)?nèi)的腳本文件放置到多個(gè)程序集中,這樣當(dāng)某個(gè)文件改動(dòng)的時(shí)候,只會(huì)重新編譯對(duì)應(yīng)的

    2024年02月12日
    瀏覽(21)
  • 500行代碼手寫docker-以新命名空間運(yùn)行程序

    500行代碼手寫docker-以新命名空間運(yùn)行程序

    本系列教程主要是為了弄清楚容器化的原理,紙上得來(lái)終覺淺,絕知此事要躬行,理論始終不及動(dòng)手實(shí)踐來(lái)的深刻,所以這個(gè)系列會(huì)用go語(yǔ)言實(shí)現(xiàn)一個(gè)類似docker的容器化功能,最終能夠容器化的運(yùn)行一個(gè)進(jìn)程。 本章的源碼已經(jīng)上傳到github,地址如下: 本章要完成的任務(wù)則是g

    2024年02月05日
    瀏覽(22)
  • 【C++對(duì)于C語(yǔ)言的擴(kuò)充】C++與C語(yǔ)言的聯(lián)系,命名空間、C++中的輸入輸出以及缺省參數(shù)

    【C++對(duì)于C語(yǔ)言的擴(kuò)充】C++與C語(yǔ)言的聯(lián)系,命名空間、C++中的輸入輸出以及缺省參數(shù)

    鐵子們好?。∵@是阿輝新開的專欄《拿下C++》的第一篇文章,本文主要帶大家了解一下C++,帶大家從C語(yǔ)言過渡到C++,所以大家首先要有C語(yǔ)言的基礎(chǔ),否則后面的內(nèi)容你可能會(huì)異常懵逼。不會(huì)C語(yǔ)言的鐵子,這里推薦各位先看阿輝的專欄《愛上C語(yǔ)言》(點(diǎn)擊即可跳轉(zhuǎn),自薦一下

    2024年02月03日
    瀏覽(26)
  • 【是C++,不是C艸】 第一個(gè)C++程序 | 命名空間 | 輸入輸出

    【是C++,不是C艸】 第一個(gè)C++程序 | 命名空間 | 輸入輸出

    ????? 歡迎來(lái)到 Claffic 的博客 ? ???? ? ?? 專欄: 《是C++,不是C艸》?? 前言: ? 在認(rèn)識(shí)了C++的來(lái)歷之后,我們就要開始正式學(xué)習(xí)C++了,系好安全帶,準(zhǔn)備出發(fā)! 注: 你最好是學(xué)完了C語(yǔ)言,并學(xué)過一些初階的數(shù)據(jù)結(jié)構(gòu)。 從創(chuàng)建項(xiàng)目開始,添加項(xiàng)的時(shí)候終于 不用刪pp 了

    2024年02月04日
    瀏覽(28)
  • 【C#圖解教程】 第六章 方法(上)

    【C#圖解教程】 第六章 方法(上)

    方法是一塊具有名稱的代碼,在類和結(jié)構(gòu)中都經(jīng)常用到 局部變量位于方法內(nèi)部,在方法中聲明時(shí)產(chǎn)生,在方法執(zhí)行結(jié)束時(shí)結(jié)束 某些情況下,在聲明的開始部分包含類型名是多余的,因?yàn)榭梢酝ㄟ^初始化看出是什么類型,所以這時(shí)可以統(tǒng)一使用var來(lái)聲明: 需要注意的是

    2024年02月07日
    瀏覽(23)
  • 虹科教程 | Linux網(wǎng)絡(luò)命名空間與虹科PROFINET協(xié)議棧的GOAL中間件結(jié)合使用

    虹科教程 | Linux網(wǎng)絡(luò)命名空間與虹科PROFINET協(xié)議棧的GOAL中間件結(jié)合使用

    PROFINET是由PI推出的開放式工業(yè)以太網(wǎng)標(biāo)準(zhǔn),它使用TCP/IP等IT標(biāo)準(zhǔn),并由IEC 61158和IEC 61784 標(biāo)準(zhǔn)化,具有實(shí)時(shí)功能,并能夠無(wú)縫集成到現(xiàn)場(chǎng)總線系統(tǒng)中。憑借其技術(shù)的開放性、靈活性和性能優(yōu)勢(shì),PROFINET可應(yīng)用于過程/工廠自動(dòng)化、運(yùn)動(dòng)控制等領(lǐng)域。通過PROFINET,可實(shí)現(xiàn)確定性響應(yīng)

    2024年02月13日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包