Tuesday, February 28, 2012

C#-Note: Internal


成員所屬型別 成員預設存取範圍 成員允許的宣告存取範圍
enumpublic
classprivatepublic
protected
internal
private
protected internal
interfacepublic
structprivatepublic
internal
private
internal只可以被本組合體(Assembly)內所有的類存取,組合體是C#語言中類被組合後的邏輯單位和物理單位,其編譯後的文件擴展名往往是“.DLL”或“.EXE”。 


MSDN範例:

internal class BaseClass
{
   public static int intM = 0;
}



class TestAccess
{
     static void Main()
     {
         BaseClass myBase = new BaseClass(); // CS0122
     }
}


如果在第二個檔案中嘗試產生BaseClass,將會產生錯誤。

將BaseClass 存取級別變為Public
將成員intM 存取級別變為Internal


public class BaseClass
{
    internal static int intM = 0;
}



public class TestAccess
{
    static void Main()
    {
      BaseClass myBase = new BaseClass(); // Ok.
      BaseClass.intM = 444; // CS0117 Error
    }
}


如此一來您可以將類別具現化,但無法存取內部成員。

No comments:

Post a Comment