内部 class 访问 c#
internal class access c#
这可能是个很简单的问题!但是我现在已经挠头一个小时了!我有两个文件如下:
- Assembly1.cs
- 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]")]
这可能是个很简单的问题!但是我现在已经挠头一个小时了!我有两个文件如下:
- Assembly1.cs
- 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]")]