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