欢迎访问 如意编程网!

如意编程网

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

msil 笔记

发布时间:2024/7/5 编程问答 4 豆豆
如意编程网 收集整理的这篇文章主要介绍了 msil 笔记 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
public class TestImpl : ITest {// Propertiespublic string Address{get{return "abc";}}//msil:address不是在接口中定义的 //hidebysig:使用时看不见这个方法,因为是给属性用的.specialname也是说是给属性用的(但不指明),只是说是特殊的. .method public hidebysig specialname instance string get_Address() cil managed {.maxstack 1.locals init ([0] string str)L_0000: nop L_0001: ldstr "abc"L_0006: stloc.0 L_0007: br.s L_0009L_0009: ldloc.0 L_000a: ret } public string Name{get{return "1";}}
//name是在接定口定义的:
//多了newslot virtual final 这几个.
// .method
public hidebysig specialname newslot virtual final instance string get_Name() cil managed {.maxstack 8L_0000: ldstr "1"L_0005: ret } int ITest.Age{get{return 1;}set{}} //age是显示式实现的:
//不同点是用private修饰.其他的同上.get与set无区别. .method
private hidebysig specialname newslot virtual final instance void System.Reflection.ITest.set_Age(int32 'value') cil managed {.override System.Reflection.ITest::set_Age.maxstack 8L_0000: nop L_0001: ret } .method private hidebysig specialname newslot virtual final instance int32 System.Reflection.ITest.get_Age() cil managed {.override System.Reflection.ITest::get_Age.maxstack 1.locals init ([0] int32 num)L_0000: nop L_0001: ldc.i4.1 L_0002: stloc.0 L_0003: br.s L_0005L_0005: ldloc.0 L_0006: ret }} //c#中的:abstract
.method public hidebysig specialname newslot abstract virtual instance string get_Tel() cil managed { } //C#中的virtual
.method public hidebysig specialname newslot virtual instance string get_Memo() cil managed {.maxstack 1.locals init ([0] string str)L_0000: nop L_0001: ldstr ""L_0006: stloc.0 L_0007: br.s L_0009L_0009: ldloc.0 L_000a: ret }

 

 

 

普通类

实现接口

1.属性方法

.method public hidebysig specialname instance string get_Address() cil managed .method public hidebysig specialname instance newslot virtual final string get_Name() cil managed

2.显示实现

 

.method private hidebysig specialname instance newslot virtual final int32 System.Reflection.ITest.get_Age() cil managed

3.Virtual

.method public hidebysig specialname instance newslot virtual string get_普通Virtual属性() cil managed .method public hidebysig specialname instance newslot virtual final没了 string get_Memo() cil managed

4.Abstract

.method public hidebysig specialname instance newslot abstract virtual  string get_普通Abstract属性() cil managed .method public hidebysig specialname instance newslot abstract virtual string get_Tel() cil managed

5.New

.method public hidebysig specialname instance 编译时直接优化掉了. string get_普通未覆盖基类属性() cil managed .method public hidebysig specialname instance newslot virtual final 与1相同 string get_接口NEW属性() cil managed

 

.method public hidebysig specialname instance //天哪,覆盖基类中的new关键字只是个c#中的语法il不管这事,编译时将被调用方法直接找到了? string get_覆盖基类属性() cil managed

 

 

 

 

下面是ITest的定义.

public interface ITest {// Propertiesint Age { get; set; }string Name { get; } }

 

转载于:https://www.cnblogs.com/foreachlife/p/msil1.html

总结

以上是如意编程网为你收集整理的msil 笔记的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得如意编程网网站内容还不错,欢迎将如意编程网推荐给好友。