码迷,mamicode.com
首页 > 其他好文 > 详细

Reflector的简单使用入门学习

时间:2014-11-14 12:27:15      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   ar   使用   sp   div   on   

 

通过这篇博文学习简单的Reflector的操作

首先新建一个项目

bubuko.com,布布扣

在这个项目中我们新建了一个类

public class People
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    }

在Main函数中我们做了以下操作,实例化了一个类并在控制台中打印了相关的信息

static void Main(string[] args)
        {
            People p = new People { Id = 1, Name = "test", Age = 12 };
            Console.WriteLine("Id={0},Name={1},Age={2}", p.Id, p.Name, p.Age);
            Console.ReadLine();
        }

将程序集拖入Reflector中

bubuko.com,布布扣

 

那看到这里,可能你会觉得奇怪

bubuko.com,布布扣

 

通过Reflector我们可以查看到,在我们定义一个简单的类的时候,编译器帮我们生成了三个私有的字段

[CompilerGenerated]
private int <Age>k__BackingField;
 
[CompilerGenerated]
private int <Id>k__BackingField;
 
[CompilerGenerated]
private string <Name>k__BackingField;

通过标签CompilerGenerated我们可以知道,这是编译器帮我们内部生成的

查看Age属性下的方法

bubuko.com,布布扣

[CompilerGenerated]
public void set_Age(int value)
{
    this.<Age>k__BackingField = value;
}

 [CompilerGenerated]
public int get_Age()
{
    return this.<Age>k__BackingField;
}

原来其编译器的内部还是先生成了一个私有的字段,在给属性附上字段的值

开到这里,你是不是明白了这和我们定义一个私有字段的值和公有字段的值供给外部调用是一样的呢

private  private int id;

        public int Id
        {
            get { return id; }
            set { id = value; }
        }
        private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        private int age;

        public int Age
        {
            get { return age; }
            set { age = value; }
        }

好了,到这里,我们去看看Main

bubuko.com,布布扣

 

更多的Reflector反编译学习的http://www.cnblogs.com/edisonchou/p/4088959.html

Reflector的简单使用入门学习

标签:style   blog   http   color   ar   使用   sp   div   on   

原文地址:http://www.cnblogs.com/ilooking/p/4096832.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!