NET体系结构,图解教程

作者: 网络编程  发布:2019-11-28

* 基础

内容提要:

1、virtual和new

   - Virtual 关键字允许在派生类中重写那个目的,默许情况下,方法是非假造的,不能重写非虚方法;

   - virtual关键字不得以与static、abstract、private、override一同行使。

   - Virtual关键字又是和override紧凑不可分的,假如要兑现Virtual方法就必定要使用override或new关键字(new和override产生的机理差别卡塔尔。New和Override那四个根本字是排斥的。不可以并且采用;

   - new : new关键字可以在派生类中潜藏基类的主意

   - virtual: Override关键字主假设提供派生类对基类方法的新落成,重写的基类方法必须和Override的点子具备相像的具名,相符的访谈修饰符

总结:New关键字重要用来区分派生类和基类同名方法的接收难题,通过隐形基类方法,达到使编写翻译器调用正确的秘诀的指标。Override主要用来对基类的措施和虚方法举办重写。

编写翻译和平运动行面向对象.NET代码

2、不用vs软件写代码

  - 在notepad 中写代码,命名称为.cs结尾的公文:My.cs

  - 对源文件运营C#命令行编译器csc.exe ,编写翻译(csc My.cs卡塔 尔(英语:State of Qatar)→ 运转(My.exe卡塔 尔(阿拉伯语:قطر‎

  - 展开命令行的秘诀:1、cmd中运作批管理公事【C:Program Files (x86)Microsoft Visual StudioPreviewEnterpriseCommon7ToolsVsDevCmd.bat】,然后再转到d: 盘 csc My.cs ; 

                2、在windows→ 菜单→ 最早→ 程序→ VS菜单→ 命令提醒符窗口

   注: cmd中,d:转到d盘目录下, cd MyNote转到d盘的MyNote目录下

using System;
namespace Wrox
{
    public class My
    {
        static void Main()
        {
            Console.WriteLine("Hello form Wrox");
            Console.ReadLine();
        }
    }
}

 

IL/MSIL(Microsoft Intermediate Language卡塔尔中间语言的助益

* net框架

  - .NET框架由三片段组成。

              图片 1

值类型与引用类型

1.CLR 

               * 内部存款和储蓄器管理和污源搜聚。

    * 代码安全注明。

    * 代码实行、线程管理及那些管理。

    - .NET Framework的主导是运营库实行情况,称为(公共语言运行库CLSportage或.NET运行库卡塔尔,通过CL安德拉调节下运转的代码称为托管代码

数码类型化

1.1 编译:

  1. 将源代码编译为Microsoft中间语言(IL卡塔尔【低等语言,数字代码,可连忙转移为本地机器码】

  2. CL奥迪Q5把IL编写翻译为平台专用的代码

  - 优点:

    平台无关性:编写翻译为中等语言能够获得.NET平台非亲非故性。

    提升质量:IL总是即时编写翻译(称为JIT编写翻译卡塔尔国,只编写翻译调用的那有个别,代码编写翻译过一遍后,获得的地面可实践程序就存款和储蓄起来,直到退出程序结束,后一次运维着代码就没有必要再行编写翻译了。

         托管IL代码大约和地点机械代码的实践进程同样快,JIT编译器确切知道程序运营在什么类型的微机上,能够动用该Computer提供的其它性格或一定的机械代码指令来优化最终

         的可进行代码。

    语言的互操作性:能将VB C# C 编写翻译为中间语言,编译为中等语言的代码能够与别的语言编写翻译过来的代码进行人机联作操作。

 

程序集、.NET基类和名称空间

1.2 编写翻译工具蕴含了编码和调节和测量试验所需的百分百,富含:

    * Visual Studio集成开采碰到IDE.

    * .NET宽容的编写翻译器(如:C# VB...).

    * 调试器.

    * 网站开辟服务器手艺,如ASP.NET 或WCF

  BCL(base class library基类库卡塔 尔(英语:State of Qatar),是.NET框架的二个大类库

  C#编制的代码靠.NET Framework运营,结论:1.c#的类别布局和方法反映了.net幼功方法论  2.大部分情景下,c#特定语言成效决计于.NET的效能,或依靠于.NET基类。

一、.NET和C#

对于C#言语来讲:C#的布局和方法论反映了.NET根底方法论;在无数意况下,C#的一定语言成效决计于.NET的功效,或凭借于.NET基类。

Q:.NET与c#的关系?

A:C#是专程为与Microsoft的.NET Framework一同使用而规划的(.NET Framework 是二个效果与利益极其足够的阳台,可支付、布署和施行布满式应用程序卡塔尔。

注意:C#就其自个儿来说只是生龙活虎种语言,即使它是用于生成面向.NET境遇的代码,但它本身不是.NET的一片段。.NET援救的有些特色,C#不支持。而C#言语扶助的另豆蔻梢头部分风味,.NET却不扶持。

2. 中间语言

二、 公共语言运营库(CLPAJERO,Common Language Runtime卡塔尔

托管代码(Managed Code卡塔 尔(阿拉伯语:قطر‎:在CLCRUISER调整下运作的代码。

Q:.NET 是怎么着编写翻译代码的?

A:将源代码编写翻译为中等语言CLRubicon把IL编译为平台专项使用的代码。

Q:行使IL有怎样亮点?

A:平台无关性、提升品质和语言的互操作性。

立时编写翻译(JIT,Just In Time卡塔 尔(英语:State of Qatar)

Q:缘何托管IL代码差不离和本地机械代码的推行进程相似快?

A: JIT编写翻译器并非把全体应用程序叁回性编译完,而是只编写翻译它调用的那某个代码。代码编写翻译过叁回后,获得的本土可执路程序就存款和储蓄起来,直到退出该应用程序结束,后一次运作该代码时,就无需在编写翻译。

Q:何以IL即时编写翻译能够增长质量?

A:因为编写翻译进程的结尾风姿罗曼蒂克有个别是在运转时开展的,JIT编写翻译器确切地明白程序运行在怎么样类型的微处理器上,可以动用该计算机提供的任何性格或一定的机器代码指令来优化最终的可实践代码。

Q:IL是哪些呈现语言的互操作性的?

A:将其他意气风发种语言(.NET 帮助的言语)编写翻译为中等语言,编写翻译为中等语言的代码能够与从其余语言编写翻译过来的代码实行人机联作操作。

2.1 特征

  1. 面向对象和应用接口:带有类的纯粹世袭性,

  2. 例外的值类型和援用类型:值类型变量之间存款和储蓄数据,援用类型变量仅存款和储蓄地方,对应的数码在该地方中找

  3. 强数额类型化

  4. 行使特别来管理错误

  5. 应用个性(attribute卡塔 尔(英语:State of Qatar)

三、中间语言

Q:IL的主要性特征?

A: 面向对象和接受接口,值类型和援用类型之间的显明差距,强数据类型化,使用极度管理错误和动用性情。

Q:怎么着是接口观念?

A:提供四个协议,落成给定接口的类必得提供该接口钦命的章程和性质的兑现情势。

Q:语言互操作性的意义?

A:用后生可畏种语言编写的类应能直接与另风华正茂种语言编写的类通讯。首要能够体现在:

用风姿洒脱种语言编写的类应能持续另风流倜傥种语言编写的类。

四个类应能包罗另二个类的实例,而不管五个类是怎么语言编写的。

贰个目的应能直接调用用别的语言编写的另三个目的的艺术。

目的应能在方式之间传递。

在不一致的言语之间调用方法时,应能在调节和测量试验器中退换调节和测验那么些艺术调用,即调节和测量检验分歧语言编写的源代码。(Visual Studio IDE已经贯彻该意义,注意该功效不是CLOdyssey提供的。卡塔尔

Q:怎么样是值类型,什么是援用类型?

A:值类型(Value Type卡塔 尔(阿拉伯语:قطر‎,变量直接存款和储蓄数据。引用类型(Reference Type卡塔 尔(阿拉伯语:قطر‎,变量仅存款和储蓄地点,对应的数码足以再改地址中找到。

IL数据存储的正式:援引类型的实例总是存款和储蓄在一个名字为托管堆的内部存款和储蓄器区域中,值类型日常存款和储蓄在仓库中(即使值类型在利用途目中宣示字段,它们内联存款和储蓄在堆中卡塔 尔(阿拉伯语:قطر‎。

经过品种系统(CTS,Common Type System卡塔尔国;公共语言专门的学业(CLS,Common Language Specification卡塔尔;CLS和CTS一齐确定保证语言的互操作性。

图片 2

Q:何以的对象会被.NET 垃圾回收器回笼?

A:叁个目的不被此外此外对象所引用时,GC选择一定的算法在托管堆中遍历全体目的,构成三个目的图,而无法达到的对象将改为被假释的污源对象。

Q:.NET 垃圾回笼的做事规律?

A:种种应用程序都有生机勃勃组根,指向托管堆中的存储地点,由JIT编译器和CL兰德Tiguan运转时保卫安全根指针列表,主要包蕴全局变量,静态变量,局地变量和贮存器指针等。垃圾搜聚器正是通过指针列表来实现托管堆中的对象图,当废品回收器运营时,它生机勃勃旦全部目标都以可回笼的懦夫,然后开首遍历全部的根,将根引用的靶子标志为可达指标图中,依次类推,垃圾搜聚器通过根列表的递归遍历,将能找到的富有可达对象,产生三个可达图。相同的时间不可达到的指标则认为是可回笼的靶子。这种算法平日称为:标识和肃清算法。

内部存款和储蓄器管理周期性的实施内存清管事人业,平常依照以下步骤运维垃圾搜集器:

目的充满时。

强制实践GC.Collect方法。

windows报告内部存款和储蓄器不足,CL陆风X8将强制实行垃圾回笼。

CL哈弗卸载AppDomain时,GC将对具备代龄的靶子实践垃圾回笼。

垃圾采摘器将托管堆中的对象分为三代:第0代,第1代,第2代,当中第0代对象的回笼的效能最高,CL途胜初叶化后,被加多到托管堆中的对象都被定为第0代,当有垃圾回笼实施时,未被回笼的靶子晋级为第1代对象,而后新建的指标仍然是第0代对象。也正是说代龄越小,表示对象越新,平日状态下生命周期越短。因而垃圾收罗器总是第2回笼第0代的不足达到指标的内部存款和储蓄器。第0代对象内部存款和储蓄器不足以创造新的目的,同期第1代对象的体积也超过了体量值时,垃圾回笼器将同一时候对第0代和第1代对象开展垃圾回笼。回笼后未被撤废的第1代对象晋级为第2代目的,未被回收的0代对象进级为1代目的,而后新建的指标仍然为第0代。垃圾搜罗规范上述进程的不停重复。

强数据类型化带给的安全性:.NET很好的弥补了Windows提供的延安机制,因为它提供的安全部制是基于代码的安全性,而Windows仅提供了依赖剧中人物的安全性

Q:何以是使用程序域?

A:接收程序域是.NET中的三个重要本领校勘,它用来减少运作应用程序的系统开垦,那么些应用程序必要与其余程序分别开来,但仍需相互通信。

动用程序域是分手组件的黄金年代种方法,它不会诱致因在经过间传递数据而发出的习性难点。

其艺术是把其他二个经过降解到两个利用程序域中。每一种应用程序域大致对应一个应用程序,推行的那一个线程都运作在三个切实可行的行使程序域中。

图片 3

Q:.NET 如哪处理运转时的谬误?

A:.NET通过特别机制来处理运转时的荒诞情形。非凡布局确定保障在爆发错误情状时,实施进程跳到最有指向的非凡管理例程上,来处理错误。

3.放弃物回笼

  - 内部存款和储蓄器泄漏:诉求内部存款和储蓄器的代码必需显式布告系统它怎么时候不再须求该内部存款和储蓄器,十分轻松被脱漏,进而产生内部存款和储蓄器泄漏;

  - .NET垃圾回笼期是四个先后,用来清理内部存储器。全部动态央浼的内部存款和储蓄器都分配到堆上,隔生龙活虎段时间.NET检查评定到给定进度的托管堆已满,需求清理时,就调用垃圾回笼器。垃圾回笼器管理当下代码

     中颇有变量,检核查存款和储蓄在托管堆上的靶子的援用,未有援用的指标被删除。由此:无法承保哪一天会调用垃圾回收器:CL哈弗决定供给它时就足以调用它

四、程序集

Q:怎么样是程序集?

A:程序集是带有编写翻译好的、面向.NET Framework的代码的逻辑单元。

小心:程序集是全然自描述的,它不是三个大要单元,能够积累在多个公文中。

瞩目:可实施代码和库代码使用相仿的前后相继集结构。唯大器晚成分化是可推行代码的次序集带有贰个主程序入口点。

Q:前后相继集的特色?

A:次第集的二个第风华正茂特点时它们包括的元数据描述对应代码中定义的类型和艺术。程序集也满含描述程序集作者的元数据,这种程序集元数据包括在三个清单的界别个中,可以检查程序集的版本及其完整性。

Q:私家程序集与共享程序集的区分?

A:个人程序集是意气风发种最简便的先后集类型。私有程序集平时附带在有个别软件上,且只好用于该软件。

分享程序集是别的应用程序能够利用的公共库。

为缓慢解决名称冲突和程序集不一样版本之间的覆盖难题,我们把分享程序集放在一个一定的子目录树中,这些子目录树称为全局程序集缓存(GAC,Global Assembly Cache卡塔尔为了制止名称冲突,应基于私钥加密法为分享程序集钦定二个称呼,该名叫作强名(strong name卡塔 尔(英语:State of Qatar),并确定保障唯后生可畏性,它必须由要征引共享程序集的应用程序来援用。

个人程序集完全部是自包涵的,只需把相应文件放在文件系统中对此文本夹就能够,那个进度成为0影响安装。

Q:怎么是反光本领?

A:因为程序集存款和储蓄了元数据,包罗在前后相继聚焦定义的具有项目和那些类别的分子的底细,所以能够编制程序访谈这个元数据。这种本事成为反射。

本文由金沙澳门官网发布于网络编程,转载请注明出处:NET体系结构,图解教程

关键词: 金沙澳门官网