自学C#记录:C#核心技术1

C#依靠运行时来实现自动内存管理。公共语言运行时的垃圾回收器会作为程序的一部分运行,并负责回收那些不再被引用的对象所占用的内存,程序员无须显式释放对象的内存

C#并未抛弃指针,只是在大多数编程任务中是不需要使用指针的。对于性能优先的热点和互操作性,仍然可以在标记为unsafe的程序块内使用指针并进行显式内存分配。

CLR和语言无关

与其他的托管语言一样,C#也会将代码编译为托管代码托管代码以中间语言(Intermediate Language, IL)的形式表示。CLR通常会在执行前,将IL转换为机器(例如x86或x64)原生代码,称为即时(Just-In-Time, JIT)编译除此之外,还可以使用提前编译(ahead-of-time compilation)技术来改善拥有大程序集

托管代码的容器称为程序集(assembly)或可移植程序集(portable executable)。程序集可以是一个可执行文件(.exe)也可以是一个库(.dll)。它们不仅包含IL,还包含称为元数据(metadata)的类型信息。元数据的引入使程序集无须额外的文件就可以引用其他程序集中的类型。

使用Microsoft的ildasm工具可以反编译并查看程序集的IL。而其他工具,例如ILSpy、dotPeek(JetBrains)以及Reflector(Red Gate)则可以将IL代码进一步反编译为C#。IL的层次相比原生机器代码要高得多,因此反编译器可以高质量地重建C#代码。


程序也可以通过反射(reflection)查询其元数据,甚至在运行时生成新的IL(reflection. emit)。

NET Framework是由CLR和大量的程序库组成的。这些程序库由核心库(本书主要介绍)和应用库组成,应用库依赖于核心库。

核心库又称为基础类库(Base Class Library, BCL)。而整个框架称为框架类库(Framework Class Library)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张老师带你学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值