public class TestImpl : ITest
{
// Properties
public string Address
{
get
{
return "abc";
}
} //msil:address不是在接口中定义的
//hidebysig:使用时看不见这个方法,因为是给属性用的.specialname也是说是给属性用的(但不指明),只是说是特殊的.
.method public hidebysig specialname instance string get_Address() cil managed
{
.maxstack
.locals init (
[] string str)
L_0000: nop
L_0001: ldstr "abc"
L_0006: stloc.
L_0007: br.s L_0009
L_0009: ldloc.
L_000a: ret
}
public string Name
{
get
{
return "";
}
}
//name是在接定口定义的:
//多了newslot virtual final 这几个.
//
.method public hidebysig specialname newslot virtual final instance string get_Name() cil managed
{
.maxstack
L_0000: ldstr ""
L_0005: ret
}
int ITest.Age
{
get
{
return ;
}
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
L_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
.locals init (
[] int32 num)
L_0000: nop
L_0001: ldc.i4.
L_0002: stloc.
L_0003: br.s L_0005
L_0005: ldloc.
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
.locals init (
[] string str)
L_0000: nop
L_0001: ldstr ""
L_0006: stloc.
L_0007: br.s L_0009
L_0009: ldloc.
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
{
// Properties
int Age { get; set; }
string Name { get; }
}

msil 笔记的更多相关文章

  1. Mini ORM——PetaPoco笔记

    Mini ORM--PetaPoco笔记 记录一下petapoco官网博客的一些要点.这些博客记录了PetaPoco是如何一步步改进的. 目录: Announcing PetaPoco PetaPoc ...

  2. S2总结笔记

    第一章:深入.NET框架 1..NET FrameWork两大组件是什么? 解析:.NET 框架类库(FCL:FrameWork Class Library)和公共语言运行时(CLR:common l ...

  3. 黑马程序员-C#学习笔记

    ---------------------- ASP.Net+Android+IOS开发..Net培训.期待与您交流! ---------------------- C#学习笔记 1..NET/.do ...

  4. 认识CLR [《CLR via C#》读书笔记]

    认识CLR [<CLR via C#>读书笔记] <CLR via C#>读书笔记 什么是CLR CLR的基本概念 通用语言运行平台(Common Language Runti ...

  5. CLR基础之一---认识CLR [《CLR via C#》读书笔记]

    <CLR via C#>读书笔记 什么是CLR CLR的基本概念 通用语言运行平台(Common Language Runtime,简称CLR)是微软为他们的.Net虚拟机所选用的名称.这 ...

  6. IronPython .NET Integration官方文档翻译笔记

    http://ironpython.net/documentation/dotnet/这是原文地址 以下笔记仅记录阅读过程中我认为有必要记录的内容,大多数都是依赖翻译软件的机翻,配合个人对代码的理解写 ...

  7. C#基础学习笔记(个人整理)

    学习笔记 第一章:c#基础 一.程序设计语言的发展及历史 1.程序设计语言? 通俗也叫编程语言,实现人与机器交互的工具 2.历史 1)机器语言 : 0,1 2)汇编语言 : 包含一些机器语言,同时增加 ...

  8. 初入 CLR - 阅读《CLR via C#》笔记

    最近买了一本书<CLR via C#>阅读了第一章 - CLR 的执行模型,对 .NET 一直提到的 CLR 和 .NET Framework 有了一个大致的了解.我理解主要体现在: ■ ...

  9. 《C# 语言学习笔记》——C# 简介

    1 什么是.NET Framework .NET Framework 是Microsoft为开发应用程序而创建的一个富有革命性的新平台. 1.1 .NET Framework 的内容 .NET Fra ...

随机推荐

  1. redis几种数据类型以及使用场景

    1. string类型 string为最简单类型,一个key对应一个value set mykey "wangzai" ##设置key,第二次赋值会直接覆盖之前的 setnx my ...

  2. js 获取后缀参数

    function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&] ...

  3. java quartz 中的时间格式

    SimpleTrigger 如果需要计划一个任务在指定的时间执行,或者在指定的时间后以指定的间隔连续执行多次,比如希望在2005年1月12号上午11:22:54开始执行一个任务,在这之后每隔20分钟执 ...

  4. Center OS 7 /etc/rc.d/init.d/network, status=6

    service network restart 报错 Center OS 7 /etc/rc.d/init.d/network status=6 google上找到答案: Just in case a ...

  5. Git rebase日志

    Git日志重写 为了方便管理,最近公司git接了jira,然后开发任务需要在jira上面先建立task,然后再task上面建立分支,后面该分支就和这个task进行了绑定. 因为之前一直使用传统的svn ...

  6. Spring-IOC bean 生命周期之 Lifecycle 钩子

    Lifecycle callbacks Initialization callbacks.Destruction callbacks 要与容器的bean生命周期管理交互,即容器在启动后和容器在销毁前对 ...

  7. laravel框架之blade模板引擎

    ## 1.基本用法 ##情形1 $name = laravel5 <div class="title"> {{$name}} {{$name}}</div> ...

  8. 20165318 2017-2018-2 《Java程序设计》第九周学习总结

    20165318 2017-2018-2 <Java程序设计>第九周学习总结 目录 学习过程遇到的问题及总结 教材学习内容总结 第13章 Java网络编程 代码托管 代码统计 学习过程遇到 ...

  9. Python之Cubes框架使用

    本文主要内容包含Cubes框架的介绍和简单使用. 一. 介绍和安装 Cubes是一个轻量级的Python框架和一套工具,用于开发报告和分析应用程序,在线分析处理(OLAP),多维分析和聚合数据的浏览. ...

  10. mybatis提取<where><if>共用代码

    mybatis项目dao层中很多sql语句都会拥有某些相同的查询条件,以<where><if test=""></if></where&g ...