2012-08-14 40 views
-2

我遇到了內部訪問修飾符的問題。我也看過this URL,但仍然面臨這個問題,爲什麼下面的代碼不識別BaseClass的成員?關於C#中的內部訪問修飾符

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


namespace Project1 
{ 
    class TestAccess 
    { 
     static void Main() 
     { 
      BaseClass myBase = new BaseClass(); 
      Console.WriteLine(myBase.intM); 

     } 
    } 
} 
+0

你有使用系統;聲明? – Freeman 2012-08-14 22:00:55

+0

有一個與問題一起出現的錯誤消息。你讀過它嗎? – Jon 2012-08-14 22:02:06

回答

6

這不是內部問​​題,但顯然與靜態。你的類成員是靜態的,你試圖通過一個實例來訪問它。

2

編譯器可能抱怨,「無法在非靜態上下文中訪問靜態成員intM」。問題在於intM被定義爲靜態的,基本上這意味着它屬於類本身而不屬於它的任何一個實例,並且它不能被訪問,就好像它屬於一個實例一樣。您將改爲訪問此成員,如下所示:

Console.WriteLine(BaseClass.intM); 

您甚至不需要創建BaseClass實例來執行此操作。

+0

謝謝。我得到的錯誤消息:**成員'Project1.BaseClass.intM'不能通過實例引用進行訪問;用類型名稱代替它\t **我不知道我在那裏沒有注意到static關鍵字。這不是我的代碼,而是我在MSDN上找到的例子。 – 2012-08-14 22:24:49