2014-10-28 28 views
0

我只是想在我的BaseClass使用內部,MSDN告訴我,內部類不能被實例化的其他方法或類,併產生一個錯誤,但爲什麼我仍然可以實例化BaseClass的方法Main()內部如何運作符

TestAccess.cs

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

class TestAccess 
{ 
    static void Main() 
    { 
     BaseClass myBase = new BaseClass(); // CS0122 This should be an error because BaseClass is Internal class. 
    } 
} 

回答

2

你誤會MSDN。 internal意味着該類僅在包含它的程序集內可見。你發佈的例子是完全有效的。

MSDN說,

它是引用一個類型或成員具有內部訪問 內它被限定的組件的外部錯誤。

(重點煤礦)

+0

所以這意味着我需要兩個單獨的項目來使內部說明符的作品? – 2014-10-28 01:43:34

+1

如果你想限制基於包含它的程序集的可視性,那麼是的。 – 2014-10-28 01:45:01

1

你是誤會什麼intenral手段。 internal項目可以從同一個程序集(即項目或DLL)中的任何文件訪問。在同一個文件中有兩個類肯定在同一個程序集中。

MSDN

內部關鍵字是類型和類型成員的訪問修飾符。 內部類型或成員僅在文件訪問在同一 裝配

1

Internal僅用於在同一組件內的訪問。你不會因爲你在同一個程序集中(在這種情況下是同一個文件)而得到一個錯誤。

如果它在另一個項目中,您將無法訪問internal class BaseClass