zoukankan      html  css  js  c++  java
  • CLR via C# 第一章(3)

    NGen.exe工具,将一个应用程序集的所有IL代码编译成本地代码,并将这些代码保存到一个磁盘文件中,可以避免在运行时进行编译。

    1.4.1 IL是基于栈的

    ,这意味着它的所有指令都要将操作数压入push一个执行栈, 并从栈弹出pop结果,IL指令是“无类型”的。将IL编译成本地cpu指令时,CLR会执行验证,以保证代码是安全无错的,在托管模块的元数据中,包含了要由验证过程使用的所有方法和类型信息。

    1.4.2 不安全的代码

    不安全的代码允许直接操作内存地址,并操作这些地址出的字节。用unsafe关键字标注,/unsafe。

    PEVerify.exe检查一个程序集的所有方法,并报告其中含有的不安全代码的方法。

    1.5 本地代码生成器

    NGen.exe  将IL代码编译成本地代码   提升性能,但要慎用。

    1.6 Framework 类库

    FCL是一组DLL程序库的统称。

    1.7 通用类型系统

    类型是CLR的根本,微软制定了“通用类型系统”CTS,描述类型定义和行为。

    类型成员:字段(数据变量)、方法(函数)、属性(getter和setter)、事件(在对象以及其他相关对象之间实现了一个通知机制)。

    CTS还指定了类型可视性规则以及类型成员的访问规则。

    对类型成员的访问限制:

    • private成员只能由同一个类class类型中的其他成员访问。
    • family成员可有派生类型访问,不管那些类型是否在同一程序集中,C#中是protected
    • family and assembly 成员可由派生类型访问,但这些派生类型必须位于同一程序集。
    • assembly 成员可由同一程序集的任何代码访问,C#中是internal
    • family or assemly 成员可由任何程序集镇南关的派生类型访问,也可由同一程序集正的任何类型访问,C#中是protected internal
    • public 成员可由任何程序集中的任何代码访问。

    所有类型最终必须从System.Object类型继承。

  • 相关阅读:
    005. gitlab安装
    004. github使用
    003. git标签
    TS标红和报错解决(优化项)
    catalog连接数据库与sde权限问题
    博客新生企划
    HDU 7105 Power Sum
    HDU 7131 Nun Heh Heh Aaaaaaaaaaa
    BZOJ 1691 挑剔的美食家
    洛谷 4254 Blue Mary 开公司
  • 原文地址:https://www.cnblogs.com/Adobe_fans/p/1989002.html
Copyright © 2011-2022 走看看