04 2018 档案

摘要:一、类的强制转换1.转换成某个类用Castclass指令。实例代码:ilGenerator.Emit( OpCodes.Castclass , typeof(ClassA) ); 2.转换成某个值类型用Unbox_Any指令。实例代码:ilGenerator.Emit( OpCodes.Unbox_ 阅读全文
posted @ 2018-04-23 14:07 Z语言 阅读(228) 评论(0) 推荐(0) 编辑
摘要:一、创建class用MethodBuilder的DefineType方法,可以指定父类,得到一个TypeBuilder对象。 二、实现继承接口用TypeBuilder的AddInterfaceImplementation方法。 三、显示方法重写用TypeBuilder的DefineMethodOve 阅读全文
posted @ 2018-04-20 13:52 Z语言 阅读(132) 评论(0) 推荐(0) 编辑
摘要:方法调用指令主要有Call和Callvirt。 调用static或sealed修饰的方法,用Call指令。 调用virtual或abstract修饰的方法,用Callvirt指令。 代码实例: 阅读全文
posted @ 2018-04-19 14:03 Z语言 阅读(273) 评论(0) 推荐(0) 编辑
摘要:struct(结构)是一种值类型,用于将一组相关的信息变量组织为一个单一的变量实体。所有的结构都继承自System.ValueType类,因此是一种值类型,也就是说,struct实例分配在线程的堆栈(stack)上,它本身存储了值,而不包含指向该值的指针。 一、声明struct和声明class一样, 阅读全文
posted @ 2018-04-18 15:42 Z语言 阅读(209) 评论(0) 推荐(0) 编辑
摘要:闭包(Closure)是词法闭包(Lexical Closure)的简称。 在C#里面,变量作用域有三种,一种是属于类的,我们常称之为field;第二种则属于函数的,我们通常称之为局部变量;还有一种,其实也是属于函数的,不过它的作用范围更小,它只属于函数局部的代码片段,这种同样称之为局部变量。 可以看出局部变量n并没有在函数调用后被回收,而是一直存在。 我们这里就讲解怎么实现闭包。 在最后的生成二进制文件中,局部变量n已经不是在函数内,而是转移到了一个内部类中。 阅读全文
posted @ 2018-04-17 15:39 Z语言 阅读(466) 评论(0) 推荐(0) 编辑
摘要:System.Action用于封装一个没有参数没有返回值的方法。这里生成需要Ldftn指令。 阅读全文
posted @ 2018-04-17 14:12 Z语言 阅读(292) 评论(0) 推荐(0) 编辑
摘要:生成内部类用TypeBuilder的DefineNestedType方法,得到另一个TypeBuilder。 阅读全文
posted @ 2018-04-13 14:35 Z语言 阅读(204) 评论(0) 推荐(0) 编辑
摘要:foreach可以迭代数组或者一个集合对象。foreach语句格式是它的生成步骤是foreach (<成员> in <集合>) <循环体> 一、声明三个变量,local0调用get_Current结果,local1保存集合对象的调用GetEnumerator结果,local2调用MoveNext结果 阅读全文
posted @ 2018-04-12 14:44 Z语言 阅读(165) 评论(0) 推荐(0) 编辑
摘要:break和continue本质都是标签的跳转 阅读全文
posted @ 2018-04-12 14:04 Z语言 阅读(122) 评论(0) 推荐(0) 编辑
摘要:for语句格式是这样的for(<初始化语句>;<条件语句>;<自增减语句>) <循环体> 它可以转换为while语句 if(<条件语句>){ <初始化语句> while(<条件语句>) { <循环体> <自增减语句> }} 那么就可以按照这while语句生成。 阅读全文
posted @ 2018-04-12 13:58 Z语言 阅读(127) 评论(0) 推荐(0) 编辑
摘要:本篇讲解怎么生成异常。C# 异常处理时建立在四个关键词之上的:try、catch、finally 和 throw。 阅读全文
posted @ 2018-04-11 15:09 Z语言 阅读(188) 评论(0) 推荐(0) 编辑
摘要:本篇讲解怎样生成while语句。while语句是编程语言中很重要的循环语句,它的结构是 while(<表达式>) <语句或语句块> 阅读全文
posted @ 2018-04-10 14:36 Z语言 阅读(197) 评论(0) 推荐(0) 编辑
摘要:switch语句是C#中常用的跳转语句,可以根据一个参数的不同取值执行不同的代码。本文介绍了当向switch语句中传入不同类型的参数时,编译器为其生成的IL代码。这一部分介绍的是,在switch语句中使用字符串类型的情况。 阅读全文
posted @ 2018-04-10 13:56 Z语言 阅读(526) 评论(0) 推荐(0) 编辑
摘要:switch语句是C#中常用的跳转语句,可以根据一个参数的不同取值执行不同的代码。本文介绍了当向switch语句中传入不同类型的参数时,编译器为其生成的IL代码。这一部分介绍的是,在switch语句中使用整数类型和枚举类型的情况。 阅读全文
posted @ 2018-04-10 13:54 Z语言 阅读(553) 评论(0) 推荐(0) 编辑
摘要:if...else...语句是非常重要的选择语句,它的生成一般需要ILGenerator的DefineLabel方法和 MarkLabel方法,以及Brtrue_S和Br_S指令。 阅读全文
posted @ 2018-04-09 15:02 Z语言 阅读(589) 评论(0) 推荐(0) 编辑
摘要:本篇讲解怎么样生成接口,即interface。 阅读全文
posted @ 2018-04-06 15:06 Z语言 阅读(316) 评论(0) 推荐(0) 编辑
摘要:本篇讲解怎么生成和操作一维数组。各种数组类型创建的步骤是一样的,但是加载和保存步骤有所不同。 阅读全文
posted @ 2018-04-05 16:12 Z语言 阅读(299) 评论(0) 推荐(0) 编辑
摘要:C#编程中可以给字段、方法、类以及程序集加特性即继承于Attribute的类。这里讲解怎么在IL中给 它们加上特性。 阅读全文
posted @ 2018-04-04 14:09 Z语言 阅读(235) 评论(0) 推荐(0) 编辑
摘要:数值的比较就是大于、小于、等于、大于等于、小于等于、不等于,它们的运算结果都是布尔值。 大于、小于、等于有直接对应的指令,分别是Cgt、Clt、Ceq。 大于等于、小于等于、不等于没有直接对应的指令,它的运算实现一般是取反。 阅读全文
posted @ 2018-04-03 15:35 Z语言 阅读(286) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示