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类型继承。

  • 相关阅读:
    软件产品案例分析(团队)
    Beta 冲刺 (2/7)
    Beta 冲刺 (1/7)
    机器学习笔记
    第一次作业
    机器学习第一个次个人作业
    软工实践个人总结
    第10组 Beta版本演示
    第10组 Beta冲刺(5/5)
    第10组 Beta冲刺(4/5)
  • 原文地址:https://www.cnblogs.com/Adobe_fans/p/1989002.html
Copyright © 2011-2022 走看看