关于.NET的一点理解

最近写C#,因为听说C#在Windows上做桌面开发是最好的,于是去了解了一下和C#相关的一些东西,就看到了.NET这个东西,于是看了一下官方文档再去找了好几篇博客,才算明白了一些东西。

 

.NET是一个很大的概念、平台、标准一样的东西,微软开发.NET旨在将一整套的新的开发模式和程序的运行模式做到各个平台上面,Windows、macos、Linux和各种移动平台,Android、iOS等,还有很多嵌入式平台等等等等,目前.NET有个标准,叫做.NET Standard,所有的.NET实现都是根据这个标准来实现的,目前的.NET实现大概有三种,分别是:.NET Framework,.NET Core,.NET Mono。而每种实现又包括了基本类库、CLR(运行时)和一些开发工具。

 

这三种实现又有不同,.NET Framework主要是.NET最原始的实现,很久之前就开始搞起了的,在Windows平台上面,和Windows平台绑定的比较深,主要用作Windows的桌面开发;.NET Core是.NET的一种跨平台实现,能够在Windows、Linux和macos上面跑,主要用作大规模的服务器和云应用;.NET Mono主要是用于内存占用量小的方面,比如说是嵌入式之类的,unity开发游戏也用到了这个。

 

另外C#这个呢,是.NET支持的一种开发语言,是一种编译再编译型的语言,通过先编译成IL(中间语言),之后再编译成二进制语言在系统里运行,类似于Java的感觉。

他和上面的CLR(公共语言运行时)有关系,我理解的是,代码分为托管代码和非托管代码,非托管代码就是直接作用在操作系统上面的,类似于C++和C#的非托管部分,而托管代码则是通过CLR进行内存分配和使用的,所以会有GC机制,而C#的源文件首先通过CLR编译成IL,之后再通过CLR再编译成二进制代码文件,这和Java是不一样的,Java是jvm对.class文件直接进行解释运行,然后底层再是另外一个平台适配的东西,而CLR是对于代码文件进行编译再编译,第一次编译是为了把通过.NET开发的代码进行一个统一的归一化的操作,因为.NET支持很多语言,所以对于这些语言的不同的操作的一个统一的解释就很重要,而IL大概就是做这个的,之后再编译成二进制运行。

所以对于如果说只有一个.NET实现像.NET Framework的话,那么就只有一个适用于windows平台的CLR,如此一来C#是无法进行跨平台的,因为这个CLR不支持LInux,不过现在还好,毕竟有跨平台的.NET实现,而.NET这一套开发又是支持C#的,所以C#现在应该也能够运行在Linux之类的其他平台之上,只要这个其他平台有.NET实现就可以了。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值