我只是尝试在我的BaseClass
中使用Internal,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.
}
}
答案 0 :(得分:2)
你误解了MSDN。 internal
表示该类仅在包含它的程序集中可见 。您发布的示例完全有效。
引用具有内部访问权限的类型或成员是错误的 在定义它的程序集之外。
(强调我的)
答案 1 :(得分:1)
你误解了intenral
的含义。可以从同一程序集中的任何文件(即项目或DLL)访问internal
项。在同一个文件中有两个类肯定在同一个程序集中。
来自MSDN:
internal关键字是类型和类型成员的访问修饰符。 内部类型或成员只能在同一文件中访问 装配
答案 2 :(得分:1)
Internal仅适用于同一程序集中的访问权限。您不会收到错误,因为您在同一个程序集中(在这种情况下是同一个文件)。
如果它在另一个项目中,您将无法访问internal class BaseClass
。