内部类访问c#

时间:2016-02-06 17:48:12

标签: c# class internal

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

  1. Assembly1.cs
  2. Program.cs的
  3. 我想当我在类名之前使用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();
    
            }
        }
    }
    

2 个答案:

答案 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)
    {
    }
}
}