關鍵詞 internal 是類型和類型成員的 存取修飾詞 。
此頁面涵蓋
internal存取權。 關鍵詞internal也是存取修飾詞的protected internal一部分。
內部類型或成員只能在相同 元件中的檔案記憶體取,如下列範例所示:
public class BaseClass
{
// Only accessible within the same assembly.
internal static int x = 0;
}
如需與其他存取修飾詞的 internal 比較,請參閱 輔助功能層級 和 存取修飾詞。
assembly是編譯一或多個原始程式檔所產生的可執行檔或動態連結庫 (DLL)。
如需元件的詳細資訊,請參閱 .NET 中的元件。
內部存取的常見用法是在元件型開發中,因為它可讓一元件以私用方式合作,而不會公開至應用程式程式代碼的其餘部分。 例如,建置圖形使用者介面的架構可以提供 Control 和 Form 類別,以搭配內部存取的成員合作。 由於這些成員是內部成員,因此不會公開至使用架構的程序代碼。
參考類型或成員時發生錯誤,該類型或成員具有定義元件外部的內部存取權。
範例 1
這個範例包含兩個檔案,分別是 Assembly1.cs 和 Assembly1_a.cs。 第一個檔案包含內部基類 。 BaseClass 在第二個檔案中,嘗試具現化 BaseClass 會產生錯誤。
// Assembly1.cs
// Compile with: /target:library
internal class BaseClass
{
public static int intM = 0;
}
// Assembly1_a.cs
// Compile with: /reference:Assembly1.dll
class TestAccess
{
static void Main()
{
var myBase = new BaseClass(); // CS0122
}
}
範例 2
在這裡範例中,使用您在範例 1 中使用的相同檔案,並將的 BaseClass 輔助功能層級變更為 public。 同時將成員 intM 的存取層級變更為 internal。 在此情況下,您可以具現化 類別,但無法存取內部成員。
// Assembly2.cs
// Compile with: /target:library
public class BaseClass
{
internal static int intM = 0;
}
// Assembly2_a.cs
// Compile with: /reference:Assembly2.dll
public class TestAccess
{
static void Main()
{
var myBase = new BaseClass(); // Ok.
BaseClass.intM = 444; // CS0117
}
}
C# 語言規格
如需詳細資訊,請參閱 C# 語言規格中的宣告輔助功能。 語言規格是 C# 語法和使用方式的最終來源。