C 中的internal關鍵字學習

2021-06-06 04:20:56 字數 1949 閱讀 2720

internal關鍵字是型別和型別成員的訪問修飾符。只有在同乙個程式集的檔案中,內部型別或者是成員才可以訪問。這是msdn上對internal的描述。只有這麼一句話,但是具體怎麼理解呢?型別就是enum(列舉型別),class(類),inte***ce(介面),struct(結構)等型別。型別成員如函式,成員變數等。那麼什麼是程式集呢?根據msdn上通俗易懂的解釋就是,乙個完整的.exe或者是.dll檔案就是乙個程式集,一般伴隨著exe程式集產生的還有乙個程式集清單,.exe.config檔案。下面我就用乙個例子來說明「internal關鍵字是型別和型別成員的訪問修飾符。只有在同乙個程式集的檔案中,內部型別或者是成員才可以訪問」。

首先建立乙個visual c#的class libiary專案,在該專案中建立class1,class2,class3,class 4,class5如下

public class class1

public class class2 : class1

public string getprotectedinternal()

public string getprotected()

}internal class class3

class class4 : class3

public string getprotected()

public string getpublic()

}public class class5

public string getprotectedinternal()

public string getpublic()

public string getinternal1()

}現在已經有用internal修飾的型別和型別成員了。

1.從class1,class2和class5中我們可以看到在同乙個程式集中(因為class1,class2和class5都是在同乙個dll檔案中的),internal修飾的型別成員就和public修飾的一樣可以被子類呼叫也可以被被其他的型別呼叫,而protected internal則和protected等價,不能被非子類呼叫。

圖1 在繼承類中internal修飾型別成員

圖2 在其他類中的internal修飾型別成員

2.從class3,class4和class5中,我們可以看到internal修飾的型別就和public修飾的一樣,protected internal則和protected等價。

圖3 internal修飾的繼承類

圖4在其他類中呼叫internal修飾的類

在不同程式集中呼叫internal修飾的型別和型別成員。新建乙個winform專案,在該專案中新增對上面建立的dll檔案---testinternallib.dll。

1.internal修飾的型別

圖5 internal修飾的class不可見,只有class1和class2

2.intrnal修飾的型別成員的引用

圖7 internal修飾的型別成員都不可見

ok,到此為止,解釋清楚了internal的描述。問題雖小,但是積少成多,以後就是寶貴的財富。

C 中internal關鍵字

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

C 中internal關鍵字的作用

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

C 中Internal關鍵字的總結

注意 想要徹底把internal關鍵字搞清楚,就耐著性子讀完。當然了這篇文章只是對其他文章的總結。也算是引用吧。主要還是為了把知識點搞清楚 一 進入主題之前先來了解一下,專案 解決方案 程式集 命名空間四個容易混淆的概念。專案 就是我們開發的乙個軟體。net下,專案有多種型別,如控制台 window...