共用方式為


internal (C# 參考)

關鍵詞 internal 是類型和類型成員的 存取修飾詞

此頁面涵蓋 internal 存取權。 關鍵詞 internal 也是存取修飾詞的 protected internal 一部分。

內部類型或成員只能在相同 元件中的檔案記憶體取,如下列範例所示:

public class BaseClass
{  
    // Only accessible within the same assembly.
    internal static int x = 0;
}  

如需與其他存取修飾詞的 internal 比較,請參閱 輔助功能層級存取修飾詞

assembly是編譯一或多個原始程式檔所產生的可執行檔或動態連結庫 (DLL)。

如需元件的詳細資訊,請參閱 .NET 中的元件

內部存取的常見用法是在元件型開發中,因為它可讓一元件以私用方式合作,而不會公開至應用程式程式代碼的其餘部分。 例如,建置圖形使用者介面的架構可以提供 ControlForm 類別,以搭配內部存取的成員合作。 由於這些成員是內部成員,因此不會公開至使用架構的程序代碼。

參考類型或成員時發生錯誤,該類型或成員具有定義元件外部的內部存取權。

範例 1

這個範例包含兩個檔案,分別是 Assembly1.csAssembly1_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# 語法和使用方式的最終來源。

另請參閱