C#3.5语言新特性(一)-对象集合初始化器

 

 static void mm()

       {

           mahui m = new mahui { name = "mahui", age=14 };

       }

 

       private class mahui

       {

           public string name { get; set; }

           public int age{get;set;}

       }

  

注意:这里的new Cat{}不是构造函数,用的是{}而不是(),使用的是初始化设定项
利用Ildasm.exe看到:
.method private hidebysig static void mm() cil managed
{
 // Code size       31 (0x1f)
 .maxstack 2
 .locals init ([0] class WebApplication1.TypeDemo/mahui m,
           [1] class WebApplication1.TypeDemo/mahui '<>g__initLocal0')
 IL_0000: nop
 IL_0001: newobj     instance void WebApplication1.TypeDemo/mahui::.ctor()
 IL_0006: stloc.1
 IL_0007: ldloc.1
 IL_0008: ldstr      "mahui"
 IL_000d: callvirt   instance void WebApplication1.TypeDemo/mahui::set_name(string)
 IL_0012: nop
 IL_0013: ldloc.1
 IL_0014: ldc.i4.s   14
 IL_0016: callvirt   instance void WebApplication1.TypeDemo/mahui::set_age(int32)
 IL_001b: nop
 IL_001c: ldloc.1
 IL_001d: stloc.0
 IL_001e: ret
} // end of method TypeDemo::mm
也就是说,这并不是语言的特性,而是编译器生成的时候,先调用构造函数实例化,而后“按序”调用属性的Set方法。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值