• 百 度
  • 京 东
  • 淘 宝
  • 知 乎
  • Bing
  • Google
  • Yandex
  • Quora
  • GitHub
  • StackOverflow
  • SegmentFault
  • 医 疗

CSharp语言项目、程序集、命名空间、解决方案概念说明

C#语言 项目程序集命名空间解决方案 概念说明。
注意:
文章的链接里面(即文件的名称),不可以用 # 替代 Sharp ,否则链接无法打开;即网址链接里面,用 CSharp 替代 C# ;
文章分类的 categories 属性取值,也是不可以用 # 替代 Sharp ,否则链接无法打开;但是 tags 的取值,可以包含 # 号。



C#语言 代码块 的标注方法,使用 C# 或者 CSharp 都可以;





参考文档:
访问修饰符(C# 参考):
https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/access-modifiers
C#中Internal关键字的总结:
https://www.cnblogs.com/wowoblog/p/6970502.html

1. 项目程序集命名空间解决方案 四个概念容易混淆,以下做简单的介绍说明;

1.1. 项目

项目,就是我们开发的一个软件;

.NET 环境下 ,项目有多种类型 ,如 控制台Windows 应用程序类库Web应用程序 等等;

经过编译后,会生成 .exe 文件 和 .dll 文件;

可执行的 .exe 文件有统一的主程序入口,可以被执行;而 类库 只是提供一些功能给其他项目调用。

1.2. 程序集

一个 项目 就是一个 程序集

一个 程序集 可以体现为一个 dll 文件,或者 exe 文件。

1.3. 命名空间

命名空间,主要是为了避免一个 项目 中,可能会存在的 相同对象名 的冲突 ;

1.4. 解决方案

当我们在 VS 中新建任何一种类型项目时,这个项目还属于一个解决方案;

当我们的业务相对简单时,解决方案所发挥的作用并不是很大;

但当我们开发复杂的软件时,需要多个 模块 组成;

比如说开发中常用的三层架构,U层 是一个简单的 windows应用程序(项目的一种类型)、BD层 则是由多个类库(项目的另一种类型)组成;

通过一个解决方案,我们就可以将其(多个项目)组合起来,完成我们的开发;

形象地说,解决方案就是一个容器,在这个容器里,分成好多层,好多格,用来存放不同的项目;

换句话来说:就是 程序集就是一个项目,多个项目构成一个解决方案

2. 命名空间公共语言运行库 (common language runtime,即 CLR) 的关系;

对于编辑器来说,命名空间仅仅是在类型名称前加了一些由点号隔开的符号而已,这使得一个类型的名称更长,从而也更具唯一性;

如果两个相同的类在同一个命名空间则会冲突;

如果不同的命名空间有相同的类型,也会产生二义性(即不确定访问哪一个命名空间中的同名类,除非指定了访问的是哪一个命名空间)。

注意:

1. C# 的  using  指示符,会指示编译器试着在类型名上添加不同的前缀,直到找到一个匹配为止;
   命名空间只是逻辑上,真正的类型在程序集里;

2. 当查找一个类型的定义时,编译器必须被告知到哪些程序集中进行查找,编译器将扫描它知道的所有程序集来查找类型的定义;
   一旦编译器找到了正确的程序,程序集信息和类型信息会被添加到生成托管模块的元数据中。

3. 公共语言运行库 (common language runtime,即 CLR),不知道命名空间的任何事情;
   访问一个类型时,CLR 需要知道类型的完整名称(这可能是一个相当长、包含句点符号的名称)以及该类型的定义具体在哪一个程序集中;
   这样一来,“ 运行时 ” 才能加载正确的程序集,找到目标类型,并对其进行操作。

3. 命名空间程序集 的 联系 与 区别 ;

1、命名空间是类库的逻辑组织形式,程序集就是类库的物理组织形式;

2、一个程序集内可能有多个命名空间,一个命名空间可能存在于不同的程序集中;

3、程序集是实现类型的文件,编译之后生成的,命名空间是对类型的逻辑分组;

4、C# 编译器 可能比较关心命名空间,应为它需要确定类的完整名称,然后交给公共语言运行库 (common language runtime,即 CLR); CLR只关心程序集,会通过类的完整名称加载对应的程序集。

4. 对 一个命名空间可能存在于不同的程序集中 说明;

通过在项目中使用 分部类 ,发现可以通过 分部类 实现对这个类的扩充和完善;

而使用 分部类 时我们会对命名空间进行 修改 ,进而将类进行扩展;

这就是我们说的一个 命名空间 可以存在于不同的 程序集

关于分部类的介绍可以访问下面地址:https://msdn.microsoft.com/zh-cn/library/wa80x488.aspx

以上是自己的资料总结。


转载请注明来源。

文章标题:CSharp语言项目、程序集、命名空间、解决方案概念说明

本文作者:bas369.com

发布时间:2021-07-21, 15:34:00

最后更新:2021-07-26, 09:22:04

原始链接:https://www.bas369.com/more/learning_notes/2021/07/21/CSharp%E8%AF%AD%E8%A8%80%E9%A1%B9%E7%9B%AE%E3%80%81%E7%A8%8B%E5%BA%8F%E9%9B%86%E3%80%81%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4%E3%80%81%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E6%A6%82%E5%BF%B5%E8%AF%B4%E6%98%8E/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。


  • 关于我们
  • 苏公网安备 32132302010228号
  • 联系我们
目录