.net和c#的关系其实简单,.net是c#的运行环境,而c#只是.net的其中一个组成部分中的一种情况。具体来讲,.net包括架构(Framework)、语言(VB,C++,C#,Jscript和J#等)和工具(Visual Studio)。
.net的架构(Framework)具有两个重要的组件:公共语言运行库(Common Language Runtime)和.net Framework的类库。公共语言运行库则是.net架构的基础,它可以被看做一个仓库管理员,负责提供内存管理,线程管理和远程处理等核心服务。而类库可以看作是仓库中不同的储存区域的货物,可以根据不同的需要被使用。其实,类库非常丰富,常用的有system,system.data, system.web, system.windows.form, system.collections.generic等,这些都是在程序编写中不可缺少的“货物”。
语言就再简单不过了,也就是用来描述表达算法思想的基本元素,C#只是.net众多语言的一种。
工具其实更准确的应该叫集成开发环境Integrated development environment,通过这个工具,程序猿可以进行程序的编写,调试,发布等等。Visual Studio作为最强大的集成开发工具之一使用非常方便。具体自行百度或者谷歌。
说了这么多,那么程序到底是怎么练成的?最后怎样在电脑上运行的呢?(以window桌面应用为例)答:cs---->中间语言(.exe或者dll文件)---->即时编译器(即时编译成本机代码,进行执行)
C#的源文件也就是后缀名为cs的文件经过集成开发工具的编译产生中间语言,它包含程序的中间指令Common intermediate Language和元信息,其中元信息包含类型信息和安全信息。中间语言最终在本机上被即时编译成本机可运行的代码就可以执行了。
补充:exe和dll的区别。
- exe文件是executable file,译作可执行文件,属于可移植可执行PE文件,它可以加载到内存中,并由操作系统加载程序执行,是可以在操作系统存储空间中浮动定位的可执行程序。(摘自百度百科)
- dll是dynamic link library文件,又叫动态链接库文件,它区别于静态库。静态库在程序的链接阶段被复制到程序中,但是动态库没有被复制到程序中,只是在程序运行时由系统动态的加载到内存中供程序调用。这样可执行文件在执行时,从dll中动态的获取相关的类和方法,节约了可执行文件在编译,执行时花费的时间。