msil 笔记
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 笔记的更多相关文章
- Mini ORM——PetaPoco笔记
Mini ORM--PetaPoco笔记 记录一下petapoco官网博客的一些要点.这些博客记录了PetaPoco是如何一步步改进的. 目录: Announcing PetaPoco PetaPoc ...
- S2总结笔记
第一章:深入.NET框架 1..NET FrameWork两大组件是什么? 解析:.NET 框架类库(FCL:FrameWork Class Library)和公共语言运行时(CLR:common l ...
- 黑马程序员-C#学习笔记
---------------------- ASP.Net+Android+IOS开发..Net培训.期待与您交流! ---------------------- C#学习笔记 1..NET/.do ...
- 认识CLR [《CLR via C#》读书笔记]
认识CLR [<CLR via C#>读书笔记] <CLR via C#>读书笔记 什么是CLR CLR的基本概念 通用语言运行平台(Common Language Runti ...
- CLR基础之一---认识CLR [《CLR via C#》读书笔记]
<CLR via C#>读书笔记 什么是CLR CLR的基本概念 通用语言运行平台(Common Language Runtime,简称CLR)是微软为他们的.Net虚拟机所选用的名称.这 ...
- IronPython .NET Integration官方文档翻译笔记
http://ironpython.net/documentation/dotnet/这是原文地址 以下笔记仅记录阅读过程中我认为有必要记录的内容,大多数都是依赖翻译软件的机翻,配合个人对代码的理解写 ...
- C#基础学习笔记(个人整理)
学习笔记 第一章:c#基础 一.程序设计语言的发展及历史 1.程序设计语言? 通俗也叫编程语言,实现人与机器交互的工具 2.历史 1)机器语言 : 0,1 2)汇编语言 : 包含一些机器语言,同时增加 ...
- 初入 CLR - 阅读《CLR via C#》笔记
最近买了一本书<CLR via C#>阅读了第一章 - CLR 的执行模型,对 .NET 一直提到的 CLR 和 .NET Framework 有了一个大致的了解.我理解主要体现在: ■ ...
- 《C# 语言学习笔记》——C# 简介
1 什么是.NET Framework .NET Framework 是Microsoft为开发应用程序而创建的一个富有革命性的新平台. 1.1 .NET Framework 的内容 .NET Fra ...
随机推荐
- docker 自制CentOS 6-lnp镜像
环境准备 1台centos 6.5镜像虚拟机 febootstrap.docker febootstrap 安装 yum install -y yum-priorities && r ...
- django中session的存储位置
django-session 存放位置 设置session的保存位置,有三种方法: 保存在关系数据库(db) 保存在缓存数据库(cache) 或者 关系+缓存数据库(cache_db) 保存在文件系统 ...
- #001 CSS快速入门讲解
CSS入门讲解 HTML人+CSS衣服+JS动作=>DHTML CSS: 层叠样式表 CSS2.0 和 CSS3.0 版本,目前学习CSS2, CSS3只是多了一些样式出来而已 CSS 干啥用的 ...
- python第十四课--排序及自定义函数之案例二:冒泡排序
案例二:冒泡排序 lt1=[45,12,56,-32,-3,44,75,-22,100] print('排序前:'+str(lt1)) 自定义函数:实现冒泡排序(升序)原则:1).有没有形参?有,接受 ...
- socket.io+angular.js+express.js做个聊天应用(二)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/www19940501a/article/details/27585321 接着上一篇 我用的开发工具 ...
- Jsp实现在线作业提交系统
Jsp实现在线作业提交系统 作为 Computer Science 的学生,凌晨四点之前睡都应该感到羞耻. 项目托管地址:https://github.com/four-in-the-morning/ ...
- virtualbox+vagrant学习-2(command cli)-2-vagrant cloud命令--有问题
Cloud https://www.vagrantup.com/docs/cli/cloud.html 命令: vagrant cloud 这是用来管理与vagrant相关的任何东西的命令. 该命令的 ...
- Docker实战(十)之分布式处理与大数据平台
分布式系统和大数据处理平台是目前业界关注的热门技术. 1.RabbitMQ RabbitMQ是一个支持AMQP的开源消息队列实现,由Erlang编写,因以高性能.高可用以及可伸缩性出名.它支持多种客户 ...
- C语言程序设计I—第五周教学
第五周教学总结(29/9-7/10) 本周为国庆节放假,周六周日提前补课,计算机专业已补,软件专业未补,由于国庆放假冲课不补,因此,软件专业在整体进度上落后计算机一次课,估计我要特别抽时间才能将进度拉 ...
- iredmail 设置
一些问题和修改 1.收邮件很慢安装完毕后,测试会发现 发送邮件都是秒到,但收邮件特别慢 长达十几分钟,这是因为iredmail的灰名单规则导致的(需要外部邮箱进行3次投递才接收,防止垃圾邮件),禁用灰 ...