首先,理清几个概念:项目(project)、解决方案(solution)、程序集(assembly)、命名空间(namespace)。

项目(project) 就是我们开发的一个软件。.NET下,项目有多种类型,如控制台、Windows应用程序、类库、Web应用程序等等。经过编译后,会生成.exe文件和.dll文件。 .exe文件有统一的主程序入口,可以被执行,而类库只是提供一些功能给其他项目调用。
解决方案(solution) 当我们在VS中新建任何一种类型的项目时,这个项目还属于一个解决方案。当我们的业务相对简单时,解决方案所发挥的作用并不是很大。但当我们开发复杂的软件时,需要多个模块组成。比如说开发中常用的三层架构,U层是一个简单的windows应用程序(项目的一种类型),B、D层由多个类库(项目的另一种类型)组成。通过一个解决方案,我们就可以将其多个项目组合起来,完成我们的开发。形象地说,解决方案就是一个容器,在这个容器里,分成好多层,好多格,用来存放不同的项目。换句话来说就是:程序集就是一个项目,多个项目构成一个解决方案。
程序集(assembly) 一个项目就是一个程序集。一个程序集可以体现为一个dll文件,或者exe文件。
命名空间(namespace) 主要是为了避免一个项目中,可能会存在的相同对象名的冲突。
从编辑上来说,命名空间仅仅是在类型名称前加了一些由点号隔开的符号而已,这使得一个类型的名称更长,从而也更具惟一性。如果两个相同的类在同一个命名空间则会冲突,如果不同的命名空间有相同的类型,也会产生二义性。
注意,C#的using指示符会指示编译器试着在类型名上添加不同的前缀,直到找到一个匹配为止。命名空间只是逻辑上,真正的类型在程序集里。当查找一个类型的定义时,编译器必须被告知到哪些程序集中进行查找,编译器将扫描它知道的所有程序集来查找类型的定义。一旦编译器找到了正确的程序,程序集信息和类型信息会被添加到生成托管模块的元数据中。
重要提示:CLR不知道命名空间的任何事情。访问一个类型时,CLR需要知道类型的完整名称(这可能是一个相当长、包含句点符号的名称)以及该类型的定义具体在哪一个程序集中。这样一来,“运行时”才能加载正确的程序集,找到目标类型,并对其进行操作。
联系与区别:
命名空间是类库的逻辑组织形式,程序集就是类库的物理组织形式
一个程序集内可能有多个命名空间,一个命名空间可能存在于不同的程序集中
程序集是实现类型的文件,编译之后生成的。命名空间是对类型的逻辑分组。
C#编译器可能比较关心命名空间,因为它需要确定类的完整名称,然后交给CLR。CLR只关心程序集,会通过类的完整名称加载对应的程序集
总结:
通过在项目中使用分部类,发现可以通过分部类实现对这个类的扩充和完善。而使用分部类时我们会对命名空间进行修改,进而将类进行扩展,这就是我们说的一个命名空间可以存在于不同的程序集。通过项目去不断成长,努力去做,《关于分部类的介绍可以访问下面地址:https://msdn.microsoft.com/zh-cn/library/wa80x488.aspx 》
1、internal(内部):限定的是只有在同一程序集中可访问,可以跨类
protected(受保护):限定的是只有在继承的子类中可访问,可以跨程序集
protected internal:受保护“或”内部修饰符修饰成员,当父类与子类在同一个程序集中,internal成员可见。当父类与子类不在同一个程序集中,子类不能访问父类internal成员,而子类可以访问父类的ptotected internal成员,
即,从当前程序集或从包含类派生的类型,可以访问具有访问修饰符protected internal的类型或成员。
2、internal关键字是类型和类型的成员访问修饰符。只有在同一程序集的文件中,内部类型或成员才是可访问的。内部访问通常用于基于组件的开发,因为它使一组组件能够以私有方式进行合作,而不必向应用程序代码的其余部分公开。例如,用于生成图形用户界面的框架可以提供Control和Form类,这两个类通过使用具有内部访问权限的成员进行合作。由于这些成员是内部的,它们不向正在使用框架的代码公开。
3、从定义具有内部访问能力的类型或成员的程序集外部引用该类型或成员是错误的。示例1包含两个文件(表示两个文件不在同一个程序集中):Assembly1.cs 和 Assembly2.cs。第一个文件包含内部基类BaseClass,在第二个文件中,实例化BaseClass的尝试将产生错误:
示例1:
// Assembly1.cs
internal class BaseClass
{
public static int intM = 0;
}
// Assembly2.cs
// Compile with:Assembly1.dll
class TestAccess
{
static void Main()
{
BaseClass myBase = new BaseClass(); // 错误,无法实例化
}
}
在示例2中,使用与示例1中所用相同的文件,并将BaseClass的可访问性级别更改为public,还将成员IntM的可访问性级别更改为internal。在此例中,可以实例化类,但不能访问其内部成员:
示例2:
// Assembly1.cs
public class BaseClass
{
internal static int intM = 0;
}
// Assembly2.cs
// Compile with:Assembly1.dll
public class TestAccess
{
static void Main()
{
BaseClass myBase = new BaseClass(); // Ok,可以实例化类
BaseClass.intM = 444; // 错误,因为不能访问内部成员
}
}
以上所述是小编给大家介绍的C#中的Internal关键字小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# c
# internal关键字
# asp.net 修饰符介绍(关于public、private、protected、internal)
# Mysql错误Cannot find or open table x/x from the inte
# Fckeditor XML Request error:internal server error
# 多个
# 子类
# 类库
# 应用程序
# 的是
# 是一个
# 当我们
# 修饰符
# 小编
# 组织形式
# 加载
# 几个
# 是在
# 也会
# 在这个
# 地说
# 第一个
# 才是
# 在此
# 这就是
相关文章:
建站之星代理平台如何选择最佳方案?
如何在云服务器上快速搭建个人网站?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
建站主机如何选?性能与价格怎样平衡?
如何在VPS电脑上快速搭建网站?
如何在Windows环境下新建FTP站点并设置权限?
如何在局域网内绑定自建网站域名?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
网站代码制作软件有哪些,如何生成自己网站的代码?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
大型企业网站制作流程,做网站需要注册公司吗?
实例解析angularjs的filter过滤器
网站网页制作专业公司,怎样制作自己的网页?
seo网站制作优化,网站SEO优化步骤有哪些?
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法
已有域名如何免费搭建网站?
黑客入侵网站服务器的常见手法有哪些?
Thinkphp 中 distinct 的用法解析
南宁网站建设制作定制,南宁网站建设可以定制吗?
详解jQuery停止动画——stop()方法的使用
测试制作网站有哪些,测试性取向的权威测试或者网站?
定制建站模板如何实现SEO优化与智能系统配置?18字教程
临沂网站制作公司有哪些,临沂第四中学官网?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
建站之星展会模板:智能建站与自助搭建高效解决方案
建站之星在线客服如何快速接入解答?
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
建站主机功能解析:服务器选择与快速搭建指南
如何在Golang中指定模块版本_使用go.mod控制版本号
建站之星展会模版如何一键下载生成?
建站之星如何快速解决建站难题?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
如何在自有机房高效搭建专业网站?
如何在腾讯云服务器快速搭建个人网站?
如何用y主机助手快速搭建网站?
建站168自助建站系统:快速模板定制与SEO优化指南
电商平台网站制作流程,电商网站如何制作?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
如何快速登录WAP自助建站平台?
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
建站之星安装后界面空白如何解决?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
如何正确下载安装西数主机建站助手?
*请认真填写需求信息,我们会在24小时内与您取得联系。