一个类型允许定义多个实例构造器,在使用过程中确实是十分方便的。但是,在定义这些构造器时,如果稍不留神,可能就使你的代码编译后产生了好多不必要的垃圾,增加了程序集的大小,也不够简洁。
例如:
using System;
namespace testConstruct
{
/// <summary> /// Class2 的摘要说明。 /// </summary> public class Class2
{
Int32 x = 6;
String s = "Hello";
Double d = 3.24;
Byte b;
public Class2()
{
// // TODO: 在此处添加构造函数逻辑 // }
public Class2(Int32 x)
{
}
public Class2(String s)
{
}
}
}
用ILDASM来看生成的IL结果: 可以看到,三个构造类都重复初始化了几个变量,造成编译后程序集大小的增加。 就三个构造函数已经占了40+40+40=120 Bytes. 如果稍微修改一下,如下面所示: using System;
namespace testConstruct
{
/// <summary> /// Class3 的摘要说明。 /// </summary> public class Class3
{
Int32 x = 6;
String s = "Hello";
Double d = 3.24;
Byte b;
public Class3()
{
// // TODO: 在此处添加构造函数逻辑 // }
public Class3(Int32 x) :
this()
{
}
public Class3(String s) :
this()
{
}
}
}
再用ILDASM来看产生的IL结果:
可见生成的程序集大小确实减少了不少。现在三个构造函数才占了40+7+7=54 Bytes.
就三个构造函数的代码而言,大小缩减了一半不止。
本文转自风前絮~~博客园博客,原文链接:http://www.cnblogs.com/windsails/archive/2004/09/16/43731.html,如需转载请自行联系原作者