CSharp:优化类构造器小技巧

构造函数1

class One

{

private Int32 nMem;
 private String strMem;
 public One()
 {
  nMem = 5;
  strMem = "Member";
 }
 public One(Int32 nValue, String strValue)
 {
  nMem = nValue;
  strMem = strValue;
 }

 }

构造函数2

class Two

{

private Int32 nMem = 5;
 private String strMem = "Member";
 public Two()
 {
  nMem = 5;
  strMem = "Member";
 }
 public Two(Int32 nValue, String strValue)
 {
  nMem = nValue;
  strMem = strValue;
 }

 }

构造函数3

class Three

{

private Int32 nMem = 5;
 private String strMem = "Member";
 public Three()  { }
 public Three(Int32 nValue, String strValue)  { }

 }

其中能看出来三个类的这几个构造函数有明显的不同--在代码优化方面--正是这些不同,导致了代码在编译的过程中生成的文件(exe、dll等)有很大的区别,这其中One、Three编译出来的结果我们使用微软提供的ILDASM工具看是相同的,而类Two的编译代码确大不相同,多了好些IL代码

原因是Two在调用构造函数之前每调用一次都将包括初始化两个成员变量的过程,然后才调用真正的构造函数再初始化一遍成员变量,既相当于变量初始化了两次,所以如果我们有一些需要初始化的实力字段或者许多重载测构造函数,那么我们应该考虑在定义成员变量的时候避免同时对他们进行初始化或者不再在构造器中在此初始化成员变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值