内部类访问 C#

本文关键字:访问 内部类 | 更新日期: 2023-09-27 18:33:33

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

  1. 组装1.cs
  2. 程序.cs

我想当我在类名之前使用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();
        }
    }
}

内部类访问 C#

内部表示类在程序集内可访问。上面的类在同一程序集中,因此没有错误。如果您想查看错误,请按照以下步骤操作

1) 创建库项目

2) 在该项目中创建基类

3) 创建控制台项目

4)添加第一个项目dll的引用

5)现在尝试创建实例,您将看到错误

附加信息

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

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

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

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