C 中Internal關鍵字的總結

2021-10-04 10:29:58 字數 1379 閱讀 5493

注意:想要徹底把internal關鍵字搞清楚,就耐著性子讀完。當然了這篇文章只是對其他文章的總結。也算是引用吧。主要還是為了把知識點搞清楚

一、進入主題之前先來了解一下,專案、解決方案、程式集、命名空間四個容易混淆的概念。

①專案:就是我們開發的乙個軟體。.net下,專案有多種型別,如控制台、windows應用程式、類庫、web應用程式等等。經過編譯後,會生成.exe檔案和.dll檔案。.exe檔案有統一的主程式入口, 可以被執行,而類庫只是提供一些功能給其他專案呼叫。

②解決方案:當我們在vs中新建任何一種型別專案時,這個專案還屬於乙個解決方案。當我們的業務相對簡單時,解決方案所發揮的作用並不是很大。但當我們開發複雜的軟體時,需要多個模組組成。 比如說開發中常用的三層架構,u層是乙個簡單的windows應用程式(專案的一種型別)、b、d層由多個類庫(專案的另一種型別)組成。通過乙個解決方案,我們就可以將其(多個專案)組合起來,完成我們的開發。 形象地說,解決方案就是乙個容器,在這個容器裡,分成好多層,好多格,用來存放不同的專案。換句話來說:就是《程式集就是乙個專案,多個專案構成乙個解決方案》

③程式集:乙個專案就是乙個程式集。乙個程式集可以體現為乙個dll檔案,或者exe檔案。

二、聯絡與區別

1、命名空間是類庫的邏輯組織形式,程式集就是類庫的物理組織形式。

2、乙個程式集內可能有多個命名空間,乙個命名空間可能存在於不同的程式集中

3、程式集是實現型別的檔案,編譯之後生成的。 命名空間是對型別的邏輯分組。 

4、c#編譯器可能比較關心命名空間,應為它需要確定類的完整名稱,然後交給clr。 

clr只關心程式集,會通過類的完整名稱載入對應的程式集。

internal(內部):限定的是只有在同一程式集中可訪問,可以跨類     

protected(受保護):限定的是只有在繼承的子類中可訪問,可以跨程式集     

protected internal:受保護「或」內部修飾符修飾成員,當父類與子類在同乙個程式集中,internal成員可見。當父類與子類不在同乙個程式集中,子類不能訪問父類internal成員,而子類可以訪問父類的ptotected internal成員,即從當前程式集或從包含類派生的型別,可以訪問具有訪問修飾符 protected internal 的型別或成員。

2. internal 關鍵字是型別和型別的成員 訪問修飾符。只有在同一程式集的檔案中,內部型別或成員才是可訪問的內部訪問通常用於基於元件的開發,因為它使一組元件能夠以私有方式進行合作,而不必向應用程式**的其餘部分公開。

例如,用於生成圖形使用者介面的框架可以提供 control 和 form 類,這兩個類通過使用具有內部訪問許可權的成員進行合作。

由於這些成員是內部的,它們不向正在使用框架的**公開。

C 中internal關鍵字

對於一些大型的專案,通常由很多個dll檔案組成,引用了這些dll,就能訪問dll裡面的類和類裡面的方法。假如你寫了乙個記錄日誌的dll,任何專案只要引用此dll就能實現記錄日誌的功能,這個dll檔案的程式就是乙個程式集。如果你記錄日誌的程式集是這麼定義的namespace logerhelper p...

C 中的internal關鍵字學習

internal關鍵字是型別和型別成員的訪問修飾符。只有在同乙個程式集的檔案中,內部型別或者是成員才可以訪問。這是msdn上對internal的描述。只有這麼一句話,但是具體怎麼理解呢?型別就是enum 列舉型別 class 類 inte ce 介面 struct 結構 等型別。型別成員如函式,成員...

C 中internal關鍵字的作用

對於一些大型的專案,通常由很多個dll檔案組成,引用了這些dll,就能訪問dll裡面的類和類裡面的方法。比如,你寫了乙個記錄日誌的dll,任何專案只要引用此dll就能實現記錄日誌的功能,這個dll檔案的程式就是乙個 程式集。如果你記錄日誌的 程式集是這麼定義的 namespace logerhelp...