内部 class 访问 c#

internal class access c#

这可能是个很简单的问题!但是我现在已经挠头一个小时了!我有两个文件如下:

  1. Assembly1.cs
  2. Program.cs

我想当我在 class 名称前使用 internal 关键字时,我将无法在其他 class 中实例化它,对吗?

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();

        }
    }
}

因为类都在同一个命名空间。

//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)
    {
    }
}
}

内部意味着 class 可以在 assembly.Above 中访问 class 在同一个程序集中因此没有 error.If 你想看到错误然后按照下面的步骤

1) 创建库项目

2) 在该项目中创建基础 Class

3) 创建控制台项目

4) 添加第一个工程dll的引用

5) 现在尝试创建实例,你会看到错误

附加信息

如果您想访问控制台项目中的内部成员,请在库项目AssemblyInfo.cs 中添加以下属性

[assembly:InternalsVisibleTo("[AssemblyNameOfConsoleProject]")]