前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#与.NET

C#与.NET

作者头像
zy010101
发布2019-05-25 19:49:49
7440
发布2019-05-25 19:49:49
举报
文章被收录于专栏:程序员程序员

C#从本质上来说,它是一门编程语言。他不是.NET体系的一部分。虽然C#总是用来生成.NET平台的代码。C#语言不能孤立的使用,必须与.NET平台一起使用。这样才能大大提高开发效率。

相对于C++,Java等语言,C#是一种比较新的语言。它是在吸收了C++和Java语言在设计上的优点设计出来的。从一开始C#就被设计为面向对象的开发语言。

.NET Framework的核心是运行库执行环境,通常称之为公共语言运行库(CLR)。这是因为,Visual Basic以及Visual C++等都能与.NET平台做交互操作。我们把在CLR控制下运行的代码称为托管代码。在.NET中,编译代码分为两个阶段。

  1. 把代码编译为Microsoft中间语言IL。
  2. CLR把IL编译为平台专用代码。

IL是中间语言,它的优点是语法简单,可以快速的编译为相应平台所对应的代码。这样就能使得与平台无关,并且提高性能。但是目前的事实是微软还没有使得.NET实现真正的跨平台。.NET Core提供了控制台程序以及Web程序的跨平台。

IL语言总是及时编译的(称为JIT),并不是解释性的。因此相比于解释性的Java语言,它的性能是较好的。JIT每次只编译调用的那段代码,而非将整个代码编译。代码经过一次编译以后,就会被本地保存起来,下一次运行该程序这部分代码的时候,就不需要编译了。同时JIT能够获取CPU的类型,针对特定的CPU做出不同的优化。微软为IL选择了面向对象编程,并且只允许单继承。

微软在设计的时候允许多种语言在.NET平台上进行开发,它定义的交互操作的意义是:一种语言定义的类能够直接与另一种语言定义的类进行交互,这包括类之间的相互通信,类的继承,相互使用对方的实例化对象,相互调用对方的代码。微软已经实现了这种功能,但是这需要Visual Studio的支持。

IL中间语言提供的数据类型可以分为两类:值类型和引用类型。对于值类型,变量直接存储值;对于引用类型,变量仅存储地址,而对应的数据是存储在该地址之中的。引用类型总是存储在“托管堆”之中,而值类型存储在堆栈之中。

中间语言的强数据类化是指:它不允许对模糊的数据类型进行操作,例如Python语言中变量在赋值的时候,无需考虑其数据类型是什么。但在C#里,这是不行的。正是强数据类化才实现了多种语言的互操作性。

在C#中没有指针存在,无需手动释放内存。垃圾回收器是.NET用来进行内存管理的。垃圾回收器采用的方式是将所有的内存都分配到堆上。每隔一段时间,当.NET检测到指定进程的托管堆已满的时候,就会调用垃圾回收器。垃圾回收器就会检测目前代码中所有的对象的引用计数,引用计数为0的对象就会被回收。需要注意的是,垃圾回收机制是不能和C++这样的非托管代码一起使用的。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年03月01日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档