msil实用指南-数据类型转换

TKT2016 TKT2016     2022-11-05     715

关键词:

一、类的强制转换
1.转换成某个类
用Castclass指令。
实例代码:
ilGenerator.Emit( OpCodes.Castclass , typeof(ClassA) );

2.转换成某个值类型
用Unbox_Any指令。
实例代码:
ilGenerator.Emit( OpCodes.Unbox_Any , typeof(DateTime) );
ilGenerator.Emit( OpCodes.Unbox_Any , typeof(int) );

二、值类型的强制转换

1.转化为sbyte
用Conv_I1指令。

1.转化为sbyte
用Conv_I1指令。


2.转化为short
用Conv_I2指令。


3.转化为int
用Conv_I指令。

4.转化为long
用Conv_I8指令。

5.转化为float
用Conv_R4指令。

6.转化为double
用Conv_R8指令。

7.转化为byte
用Conv_U1指令。

8.转化为ushort
用Conv_U2指令。

9.转化为uint
用Conv_U指令。

10.转化为ulong
用Conv_U8指令。

msil实用指南-局部变量的声明保存和加载(代码片段)

这一篇讲解方法内的局部变量是怎么声明、怎样保存、怎样加载的。声明局部变量声明用ILGenerator的DeclareLocal方法,参数是局部变量的数据类型,得到一个局部变量对应的创建类LocalBuilder。使用格式是LocalBuilderlocalBuilderx=ilGenerator... 查看详情

msil实用指南-生成for语句

for语句格式是这样的for(<初始化语句>;<条件语句>;<自增减语句>) <循环体>它可以转换为while语句if(<条件语句>) <初始化语句> while(<条件语句>) <循环体> <自增减语句> 那么就可以按照这while... 查看详情

msil实用指南-生成属性(代码片段)

本篇讲解怎么生成属性,包括get和set方法。第一步,生成一个字段生成字段用TypeBuilder.DefineField方法。实例代码:FieldBuildercustomerNameBldr=typeBuilder.DefineField("_CustomerName",typeof(string),FieldAttributes.Private); 第二步,创建一个Property 查看详情

msil实用指南-类相关生成(代码片段)

一、创建class用MethodBuilder的DefineType方法,可以指定父类,得到一个TypeBuilder对象。二、实现继承接口用TypeBuilder的AddInterfaceImplementation方法。三、显示方法重写用TypeBuilder的DefineMethodOverride方法。完整代码如下: usingSystem;usingSyst... 查看详情

msil实用指南-方法的调用(代码片段)

方法调用指令主要有Call和Callvirt。调用static或sealed修饰的方法,用Call指令。调用virtual或abstract修饰的方法,用Callvirt指令。代码实例:ilGenerator.Emit(OpCodes.Call,typeof(Console).GetMethod("WriteLine",newType[]typeof(int)));  查看详情

msil实用指南-创建方法和定义参数(代码片段)

 本篇讲解实现创建方法、指定参数的名称、实现参数加out和ref修饰符、以及参数加默认值。创建方法创建方法用类TypeAttributes的DefineMethod(stringname,MethodAttributesattributes,TypereturnType,Type[]parameterTypes)方法,返回结果是MethodBuilder,... 查看详情

msil实用指南-比较运算(代码片段)

数值的比较就是大于、小于、等于、大于等于、小于等于、不等于,它们的运算结果都是布尔值。大于、小于、等于有直接对应的指令,分别是Cgt、Clt、Ceq。大于等于、小于等于、不等于没有直接对应的指令,它的运算实现一般... 查看详情

msil实用指南-字段的加载和保存(代码片段)

 字段有静态字段和非静态字段之分,它们的加载保存指令也是不一样的,并且非静态字段要生成this。静态字段的加载加载静态字段的指令是Ldsfld。ilGenerator.Emit(OpCodes.Ldsfld,<FieldBuilder>);实际例子ilGenerator.Emit(OpCodes.Ldsfld,are... 查看详情

msil实用指南-加载nullstringlongfloatdouble等值(代码片段)

本篇讲述怎么加载null、string值、long值、float值、double值。加载null不需要参数值,只要Emitldnull其它几个命令要Emit<指令><值> 加载null加载null是很简单的,使用OpCodes.Ldnull,以下一句程序就可以了。ilGenerator.Emit(OpCodes.Ld... 查看详情

msil实用指南-闭包的生成和调用(代码片段)

闭包(Closure)是词法闭包(LexicalClosure)的简称。对闭包的具体定义有很多种说法,这些说法大体可以分为两类:一种说法认为闭包是符合一定条件的函数,比如参考资源中这样定义闭包:闭包是在其词法上下文中引用了自由变... 查看详情

1.javascript中常用的数据类型转换,非常实用

前言   简单、粗暴、明了、实用  1.字符串转数组    常用方法split(‘正则或字符串:以何种方式分割‘,‘指定返回的数组的最大长度,可选参数’);    eg:     (1... 查看详情

java类型转换实用程序(代码片段)

查看详情

mapstruct使用指南(代码片段)

mapstruct使用指南介绍MapStructMapStruct依赖映射基本映射不同字段间映射不同属性名称多个源类子对象映射更新现有实例数据类型转换数据类型映射数字格式转换枚举映射集合映射List映射Set和Map映射集合映射策略目标集合实现类型... 查看详情

ggplot2高效实用指南

参考技术A文章较长,点击直达我的博客,浏览效果更好。本文内容基本是来源于STHDA,这是一份十分详细的ggplot2使用指南,因此我将其翻译成中文,一是有助于我自己学习理解,另外其他R语言爱好者或者可视化爱好者可以用来... 查看详情

osgconv使用指南(转)

...一种用来读取3D数据库以及对它们实施一些简单的操作的实用应用程序,同时也被称作一种专用3D数据库工具。用osgconv把其他格式的文件转换为OSG所支持的格式  osgconv是一种非常有用的的工具来读取标准的3D格式,如OpenFli... 查看详情

mapstruct使用指南(代码片段)

MapStruct使用指南文章目录MapStruct使用指南一、背景二、简介三、MapStruct依赖1、Maven2、Gradle四、映射1、基本映射2、不同字段间映射3、多个源类4、子对象映射5、更新现有实例五、数据类型转换1、数据类型映射2、数字格式转换3、... 查看详情

flinkflinkcheckpoint问题排查实用指南

1.概述转载:FlinkCheckpoint问题排查实用指南https://www.cnblogs.com/zhaowei121/p/11535330.html【Flink精选】如何排查Checkpoint异常问题?FlinkCheckpoint问题排查实用指南 查看详情

影像数据(ct&mri)处理万能包使用指南--fslutils宝典(代码片段)

...fslroi提取感兴趣区之前介绍过Fslutils是一组有用的命令行实用程序,可对Nifti格式数据集进行查看,转换、处理等。注意:fsl是没有Fslutils这个命令的。只是把实现各种功能的小命令统称为Fslutils。那,Fslutils到底包... 查看详情