1、C#与 .NET的关系
.NET是Microsoft打造的软件系统运行体系。 C#是一门面向对象的编程语言,运行在.NET体系中。
.NET Framework是.NET体系中的一个框架。
公共语言规范CLS
公共语言规范和通用类型系统一起确保语言的互操作性。
CLS是一个最低标准集,所有面向,NET的编译器都必须支持它。
垃圾回收器
垃圾回收器用来在.NET中进行内存管理
两种方式实现:
以手工方式使应用程序代码完成这些工作。
让对象维护引用计数。
每个COM对象都会保留一个计数,当计数为0时自动清理自己。
.NET运行库的垃圾回收器,这是一个程序,其目的是清理内存。方法是所有动态请求的内存都分配到堆上, 每隔一段时间,当NET检测到给定进程的托管堆已满,需要清理时,就调用垃圾回收器。垃圾回收器处理目前代码中的所有变量,检查对存储在托管堆上的对象的引用,确定哪些对象可以从代码中引用(即哪些对象有引用)。没有引用的对象就不再认为可以从代码中访问,因而被删除。
安全性
基于角色的安全性建立在运行进程的账户的身份基础上,换言之,就是谁拥有进程和谁运行进程。
基于代码的安全性建立在代码实际执行的任务和代码的可信程度上。由于中间语言提供了强大的类型安全性,因此CLR可以在运行代码前检查它,以确定是否有需要的安全权限。.NET还提供了一种机制,使代码可以在运行前,预先指定需要什么安全权限。
基于代码的安全性非常重要,原 因是它降低了运行来历不明的代码的风险臼日代码是从网络上下载的)。 即使代码运行在管理员账户下,也有可能使用基于代码的安全性,来确定这段代码是否仍不能执行管理员账户一般允许执行的某些类型的操作,例如读写环境变量、读写注册表或访问,NET反射特性
应用程序域
应用程序域用于减少运行应用程序的系统开销。
在启动一个新的应用程序时,它会在一个进程环境内运行。Windows通过地址空间把进程分隔开来。这样,每个进程有4GB的虚拟内存来存储其数据和可执行代码,Windows利用额外的间接方式把这些虚拟内存映射到物理内存或磁盘空间的工个特殊区域中。每个进程都会有不同的映射,虚拟地址空间块映射的物理内存之间不重叠.
任何进程都只能通过指定虚拟内存中的一个地址来访问内存。进程不能直接访问物理内存,因此一个进程不可能访问分配给另一个进程的内存。这样就可以确保任何执行出错的代码不会损害其地址空间以外的数据。
应用程序域(application domain)是分离组件的一种方式,它不会导致因在进程之间传送数据而产生的性能问题。其方法是把任何一个进程分解到多个应用程序域中。每个应用程序域大致对应一个应用程序,执行的每个线程都运行在一个具体的应用程序域中.
4、程序集
程序集(assembly),是包含编译好的、面向,NET Freamework的代码的逻辑单元。
程序集是完全自描述性的,它是一个逻辑单元而不是物理单元,可以存储在多个文件中(动态程 序集的确存储在内存中,而不是存储在文件中)。如果一个程序集存储在多个文件中,其中就会有一 个包含入口点的主文件,该文件描述了程序集中的其他文件。(例如一个名叫Test的项目,编译后的文件中Test.dll就是主文件,其它引用的dll就是一般程序集)
程序集的一个重要特性是它们包含的元数据描述了对应代码中定义的类型和方法。程序集也包含描述程序集本身的元数据,这种程序集元数据包含在一个称为 “清单”的区域中,可以 检查程序集的版本及其完整性。
程序集有两种类型:私有程序集和共享程序集。
私有程序集
私有程序集是最简单的一种程序集类型
共享程序集
共享程序集是其他应用程序可以使用的公共库。
反射
因为程序集存储了元数据,包括在程序集中定义的所有类型和这些类型的成员的细节,所以可以编程访问这些元数据。这个技术称为反射。
5、.NET Framework类
编写托管代码的最大好处是可以使用.NET基类库。.NET基类是一个内容丰富的托管代码类集合,它可以完成以前要通过Windows API来完成的绝大多数任务。例如操作线程Thread
基类的大概范围
IL提供的核心功能。例如,通用类型系统中的基本数据类型,
Windows UI支持和空间
Web窗体和MVC
数据访问(ADO.NET和XML)
文件系统和注册表访问
网络和Web浏览
NET特性和反射
COM互操性
6、名称空间
名称空间是.NET避免类名冲突的一种方式。
名称空间是数据类型的一种组合方式,名称空间中所有数据类型的名称都会自动加上该名称空间的名字作为其前缀。名称空间还可以相互嵌套。
原文:https://www.cnblogs.com/liuxiansheng1024/p/12526807.html