什么是.NET
.NET是一个免费的,跨平台的,开源的开发者平台,.NET平台可以用于构建许多不同类型的应用程序。在.NET平台上,你可以使用多种语言,编辑器,库来构建web应用,移动应用,桌面应用,游戏,以及IoT物联网应用。
.NET支持哪些编程语言
我们可以在.NET平台上使用C#,F#或者Visual Basic来开发应用:
- C#是一个简单,现代,面向对象且类型安全的编程语言
- F#是一个跨平台,开源,函数式编程的语言。它还包括面向对象和命令式编程
- Visual Basic是一种易于使用的语言,具有用于构建类型安全,面向对象的应用程序的简单语法。
跨平台
无论你是使用C#, F#, 还是Visual Basic,我们的代码都是在其所处的操作系统上本机运行。 不同的.NET实现为我们处理了繁重的屏蔽操作系统底层的工作:
- .NET Core是针对macOS,Windows和Linux上的网站,服务器和控制台应用程序的跨平台.NET实现。
- .NET Framework支持Windows上的网站,服务,桌面应用程序等
- Xamarin / Mono是一个用于在所有主要移动操作系统上运行应用程序的.NET实现。
上面的介绍也间接的回答了.NET Core和.NET Framework以及Mono的区别
标准API
.NET Standard是所有.NET实现的基础API集。
每个实现还可以暴露特定于其运行的操作系统的一些其他API。 例如,.NET Framework是一个仅限Windows的.NET实现,其中包含用于访问Windows注册表的API。
开发库
为了扩展功能,Microsoft和其他人维护了一个基于.NET Standard的开发包生态系统。
NuGet是专为.NET构建的包管理器,包含超过90,000个包。类似于java中的maven
.net当中的3C
CLR 公共语言运行时
负责资源管理,内存分配和垃圾收集。保证应用和底层操作系统之间必要的分离。common lanuage runtime,垃圾回收,.net的虚拟机,和java虚拟机类似,分为托管和非托管。
.net编译之后的文件类型是程序集assembly。通常也叫做dll。就是我们看到的dll文件,类似于java的jar包。
一个程序集包含四个部分:PE32,MSIL(中间语言),manifest,resource。
CLR处理的对象就是程序集。源代码用csc.exe编译为程序集。相当于java中的java compiler.
dll是程序集的一种,exe也是程序集?
CLR的其中一个功能会把它们翻译成机器码01010,这个功能是由JIT做的。 CLR运行时的特点:与平台无关。
CTS
通用类型系统
CKS
CKS是CTS的子集,描述了面向CLR编译器必须支持的一个最小特性集合,类似于java的jdk标准类库。
BCL基础类库
就是一些标准开发api,类似于java的jdk。
WCF->web协议支持。
WPF ->做桌面应用程序。
.net当中所有的对象都绝对继承于object,包括基本类型,int等,这是与java的一个区别。
C#2.0引入了泛型,5.0引入了异步编程模型。