1.1 C#与.NET的关联
C#不能孤登时运用,必需与.NET Framework一同运用一同斟酌。
(1)C#的体系构造和要领论反应了.NET基本要领论。
(2)多半情况下,C#的特定言语功用取决于.NET的功用,或依赖于.NET基类。
.NET支撑的一些特征,C#并不支撑。C#言语支撑的另一些特征,.NET却不支撑。
1.2 大众言语运转库(CLR)
1.2.1 平台无关性
.NET Framework 的中心是其运转库环境,称为大众言语运转库(CLR)或.NET运转库。
通常将CLR掌握下运转的代码称为托管代码(managed code)。
.NET编译代码的体式格局:
阶段一:将源代码编译成Microsoft中心言语(IL)。
*IL与JAVA中字节码相似。
阶段二:CLR把IL编译为平台专用的代码。
1.2.2 进步机能
JIT(立即编译)器在应用顺序运转时才会经行编译,所以JIL确实晓得顺序运转在什么范例的处置惩罚器上,就能够针对该处置惩罚器经行优化,从而进步机能。
1.2.3 言语互操纵性
Visual Basic 2013,Visual C++ 2013,Visual F#,COM和COM+,Windows运转库。
1.3 中心言语
中心言语的重要特征:
IL平常不许可对隐约数据范例实行任何操纵,只管强迫范例平安性好像会下降机能,但多半情况下我们从.NET供应的、依赖于范例平安的效劳中猎取的优点更多,这些效劳包括:
言语的互操纵性
值范例(vaule type),变量直接存储其数据,中心言语储存在客栈中(如果在援用范例中声明为字段,它们就内联储存在堆中)。
援用范例(reference type),变量仅存储地点,援用范例的实例老是存储在一个名为“托管堆”的内存区域中。
强迫范例化
言语互操纵性的真正寄义运用一种言语编写的类应该能直接与用另一种言语编写的类通讯。(由Visual Studio IDE)供应了如许的东西(不是CLR)。
面向对象和运用接口
值范例和援用范例之间的明显差别。
言语互操纵性中强数据范例化的重要性
如果类派生或包括其他类的实例,它就须要晓得其他类运用的一切数据范例,这就是言语互操纵性非常重要的缘由。
.NET中的解决方案
通用范例体系(CTS)
CTS定义了能够在中心言语中运用的预定义数据范例,一切面向.NET Framework的言语都能够生成终究基于这些范例的编译代码。
CTS还许可定义代码本身的范例。
CTS的条理构造反应了中心言语的单一性继续的面向对象的要领。
大众言语范例(CLS)
编写非CLS将用代码是能够接收的,然则如许做以后我们就不能保证编译好的IL代码完整支撑言语的互操纵性。
垃圾网络
平安性
应用顺序域
垃圾接纳器(garbage collector)用来在.NET中举行内存治理,特别是它能够恢复正在运转的应用顺序所须要得内存。
搜检托管堆中没有援用的对象,并举行删除。
运用非常来处置惩罚毛病
运用特征(attribute)
以上就是C#高等编程(一)-.NET体系构造的细致内容,更多请关注ki4网别的相干文章!