C#关键字之internal详解
⼀、internal
我们都知道的三种类型/成员修饰符public、protected、private,也明⽩它们所表⽰的含义,internal也是⼀各类型/成员修饰符(被修饰的类型或者成员称为内部类型或成员),只是它所修饰的类只能清炒小白菜
在同⼀个程序集中被访问,⽽同⼀个桥之最
程序集表⽰同⼀个dll程序集或同⼀个exe程序集。在vs中⼀个项⽬会⽣成⼀个dll⽂件,因此这个dll或这个项⽬保洁擦玻璃
也就是⼀个程序集。
⽐如有⼀个程序集有:
namespace Common
{
internal class A
{
public void aa()
{
}
}
public class B
{
public void bb()
{
//这样是正确的
A a = new A();
a.aa();
}
}
}
如果另⼀圆明园资料
个项⽬TestWeb引⽤了此dll,即common.dll,即
using Common;
namespace TestWeb
{
public class Test
{
public void test_1()
{
//这样是出错的
A a = new A();
a.aa();
//这样是正确的
B b = new B();
b.bb();
}
}
}
内部访问通常⽤于基于组件的开发,因为它使⼀组组件能够以私有⽅式进⾏合作,⽽不必向应⽤程序代码的其余部分公开。 例如,⽤于⽣成图形⽤户界⾯的框架可以提供 Control 和 Form 类,这两个类通过使⽤具有内部访问权限的成员进⾏合作。 由于这些成员是内部的,它们不向正在使⽤框架的代码公开。
⼆、protected internal
⼀般⼀个成员或类型只能有⼀个访问修饰符,但使⽤protected internal组合时除外,它的访问仅限于从包含类派⽣的当前程序集或类型。即我们可以在本程序集中访问,也可以在其他程序集中继承访问。
如下:
namespace Common
{
protected internal class C
{
public void cc()
{
}
}
}
namespace TestWeb
{
public class TestA
{
public void test_1()
{
//这样是出错的
Comm关于瘦身
on.C c = new Common.C();市场调研报告格式
<();
}
}
public class TestB : Common.A
{
public void test_2()
{
//这样是正确的
C c = new C();
<微博注册
();
}
}
}
另外附上程序集的特性:
1.程序集是任何 Framework 应⽤程序的基本构造块。例如,在⽣成简单的 C# 应⽤程序时,Visual Studio 创建⼀个单个可移植可执⾏ (PE) ⽂件形式的程序集,明确地说就是⼀个 EXE 或 DLL。
2.包含描述它们⾃⼰的内部版本号和它们包含的所有数据和对象类型的详细信息的元数据。
3.仅在需要时才加载。如果不使⽤程序集,则不会加载。这意味着程序集可能是在⼤型项⽬中管理资源的有效途径。
4.可以包含⼀个或多个模块。例如,计划较⼤的项⽬时,可以让⼏个各个开发⼈员负责单独的模块,并通过组合所有这些模块来创建单个程序集。