最后的据点

Think it,Plan it,Build it,Make it,Happy it,Enjoy it! 格物,诚意,志存高远,脚踏实地,让精益求精成为习惯!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

属性get和set对应的方法

Posted on 2009-07-06 11:01  最后的据点  阅读(453)  评论(0编辑  收藏  举报
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace LookUpGetAndSet
{
    class Program
    {
        int age;
 
        public int Age 
        {
            get 
            {
                return this.age;
            }
 
            set 
            {
                age = value;
            }
        }
 
        static void Main(string[] args)
        {
            Program p = new Program();
            Console.WriteLine("please enter integer age:");
            string age =  Console.ReadLine();
            try 
            {
                p.Age = Convert.ToInt32(age);
                Console.WriteLine(p.Age);
                Console.ReadLine();
            }
            catch(Exception e)
            {
                Console.WriteLine("you input the wrong age,please enter an integer number!");
            }
 
             
        }
    }
}
 

反编译后,总体情况如下图所示:

sshot-1

查看Age属性,il代码如下:

.property instance int32 Age()
{
  .get instance int32 LookUpGetAndSet.Program::get_Age()
  .set instance void LookUpGetAndSet.Program::set_Age(int32)
} // end of property Program::Age

从上面可以看出来,属性中,get关联了get_Age()方法,set关联了set_Age(int32)这个方法。下面我们来看看生成的这两个方法:

get_Age()方法:

.method public hidebysig specialname instance int32 
        get_Age() cil managed
{
  // Code size       12 (0xc)
  .maxstack  1
  .locals init ([0] int32 CS$1$0000)
  IL_0000:  nop
  IL_0001:  ldarg.0
  IL_0002:  ldfld      int32 LookUpGetAndSet.Program::age
  IL_0007:  stloc.0
  IL_0008:  br.s       IL_000a
  IL_000a:  ldloc.0
  IL_000b:  ret
} // end of method Program::get_Age

set_Age(int32)方法:

.method public hidebysig specialname instance void 
        set_Age(int32 'value') cil managed
{
  // Code size       9 (0x9)
  .maxstack  8
  IL_0000:  nop
  IL_0001:  ldarg.0
  IL_0002:  ldarg.1
  IL_0003:  stfld      int32 LookUpGetAndSet.Program::age
  IL_0008:  ret
} // end of method Program::set_Age