zoukankan      html  css  js  c++  java
  • Reflector的简单使用入门学习

     

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

    首先新建一个项目

    image

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

    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中

    QQ截图20141114111127

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

    image

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

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

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

    查看Age属性下的方法

    image

    [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

    image

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

  • 相关阅读:
    AcWing 1027. 方格取数 dp
    AcWing 1014. 登山 dp
    acwing 482. 合唱队形 dp
    LeetCode 1463. 摘樱桃II dp
    LeetCode 100. 相同的树 树的遍历
    LeetCode 336. 回文对 哈希
    LeetCode 815. 公交路线 最短路 哈希
    算法问题实战策略 DARPA大挑战 二分
    算法问题实战策略 LUNCHBOX 贪心
    AcWing 1100. 抓住那头牛 BFS
  • 原文地址:https://www.cnblogs.com/ilooking/p/4096832.html
Copyright © 2011-2022 走看看