黑马程序员14——用IL查看:属性(properties)的本质是方法
2012-10-06 09:38
344 查看
---------------------- Windows Phone 7手机开发、.Net培训、
期待与您交流!----------------------
使用属性的语法看起来非常像写入或者读取一个字段:都是 classname/instancename.**
但是,属性的本质是函数代码,是方法
C#源代码
用.NET Reflector反编译生成的程序集,以IL显示出来。
从下面IL代码中可以看到:
1)C#编译器把 fl.Name = "张三" 和 f1.Age = 33 这两个属性的赋值语句映射成 两个set_属性名 的方法。
2)同理,C#编译器把 string name= fl.Name 和 int age = fl.Age 这两个属性的取值映射成两个 get_属性名 的方法
----------------------Windows
Phone 7手机开发、.Net培训、 期待与您交流!----------------------
[align=center]详情请查看 http://edu.csdn.net/heima/[/align]
期待与您交流!----------------------
使用属性的语法看起来非常像写入或者读取一个字段:都是 classname/instancename.**
但是,属性的本质是函数代码,是方法
C#源代码
namespace 属性的本质 { class Program { static void Main(string[] args) { filedLizhi fl = new filedLizhi(); fl.Name = "张三"; fl.Age = 33; string name = fl.Name; int age = fl.Age; } } public class filedLizhi { public string Name { get;set;} public int Age { get; set; } } }
用.NET Reflector反编译生成的程序集,以IL显示出来。
从下面IL代码中可以看到:
1)C#编译器把 fl.Name = "张三" 和 f1.Age = 33 这两个属性的赋值语句映射成 两个set_属性名 的方法。
2)同理,C#编译器把 string name= fl.Name 和 int age = fl.Age 这两个属性的取值映射成两个 get_属性名 的方法
.method private hidebysig static void Main(string[] args) cil managed { .entrypoint .maxstack 2 .locals init ( [0] class 属性的本质.filedLizhi fl, [1] string name, [2] int32 age) L_0000: nop L_0001: newobj instance void 属性的本质.filedLizhi::.ctor() L_0006: stloc.0 L_0007: ldloc.0 L_0008: ldstr "\u5f20\u4e09" L_000d: callvirt instance void 属性的本质.filedLizhi::set_Name(string) L_0012: nop L_0013: ldloc.0 L_0014: ldc.i4.s 0x21 L_0016: callvirt instance void 属性的本质.filedLizhi::set_Age(int32) L_001b: nop L_001c: ldloc.0 L_001d: callvirt instance string 属性的本质.filedLizhi::get_Name() L_0022: stloc.1 L_0023: ldloc.0 L_0024: callvirt instance int32 属性的本质.filedLizhi::get_Age() L_0029: stloc.2 L_002a: ret }
----------------------Windows
Phone 7手机开发、.Net培训、 期待与您交流!----------------------
[align=center]详情请查看 http://edu.csdn.net/heima/[/align]
相关文章推荐
- 使用Spring替换properties文件定义属性的方法
- python3库numpy数组属性的查看方法
- C# 3.0新特性之Automatic Properties(自动属性)、Object Initializers(对象初始化器)、Collection Initializers(集合初始化器)和Extension Methods(扩展方法)
- myEclipse使用技巧:查看某方法/属性被调用的情况
- 黑马程序员学习笔记14_OC之构造方法
- ◆HelloWorld例子 → 入门◆CURD → 归类知识点◆对象(属性、方法) → 本质◆
- spring中无法读取properties文件中属性的解决方法
- 三种方法快速打开win7计算机管理以便查看管理属性
- Java利用反射查看类属性和方法例子
- 在对象外部查看、获取、设置、判断对象的属性和方法
- Delphi SHMultiFileProperties查看多个文件属性
- 黑马程序员---窗体类,委托及窗体间的传值之构造方法属性模型和委托回调模型
- java读取properties属性文件值方法
- 步步为营VS 2008 + .NET 3.5(3) - C# 3.0新特性之Automatic Properties(自动属性)、Object Initializers(对象初始化器)、Collection Initializers(集合初始化器)和Extension Methods(扩展方法)
- Delphi SHMultiFileProperties查看多个文件属性
- 使用vs命令提示中查看IL代码方法(vs2005以上适用)
- java读取properties属性文件值方法
- 使用Properties的load方法加载属性信息
- 黑马程序员---类的属性和构造方法
- OLE/COM 对象查看器——查看已注册控件的属性和方法(自己整理)