这可能是一个非常简单的问题!但是我现在已经抓了一个小时了!我有两个文件如下:
我想当我在类名之前使用internal
关键字时,我将无法在其他类中实例化它,对吗?
https://msdn.microsoft.com/en-us/library/7c5ka91b.aspx
但为什么我这里没有收到错误消息?我可能会遗漏一些非常明显的东西。
// Assembly1.cs
namespace InternalTest
{
internal sealed class BaseClass
{
public static int intM = 0;
}
}
// Program.cs
using System;
namespace InternalTest
{
class Program
{
static void Main(string[] args)
{
var myBase = new BaseClass();
Console.ReadKey();
}
}
}
答案 0 :(得分:3)
内部意味着类可以在程序集中访问。以上类是在同一个程序集中因此没有错误。如果你想看到错误,那么按照下面的步骤
1)创建库项目
2)在该项目中创建基类
3)创建控制台项目
4)添加第一个项目dll的引用
5)现在尝试创建实例,您将看到错误
其他信息
如果要访问控制台项目中的内部成员,请在Library项目的AssemblyInfo.cs中添加以下属性
[assembly:InternalsVisibleTo("[AssemblyNameOfConsoleProject]")]
答案 1 :(得分:-2)
因为这两个类都在同一名称空间中。
//InternalTest
namespace InternalTest
{
internal sealed class BaseClass
{
public static int intM = 0;
}
}
//the same here InternalTest
namespace InternalTest
{
class Program
{
static void Main(string[] args)
{
}
}
}