稍不留神,可能就使你的代码编译后产生了好多不必要的
一个类型允许定义多个实例构造器,在使用过程中确实是十分方便的。但是,在定义这些构造器时,如果稍不留神,可能就使你的代码编译后产生了好多不必要的垃圾,增加了程序集的大小,也不够简洁。
例如:
using System;![]() namespace testConstruct { /// /// Class2 的摘要说明。 /// 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 { /// /// Class3 的摘要说明。 /// 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.
就三个构造函数的代码而言,大小缩减了一半不止 本文出自 51CTO.COM技术博客 |






}
virus
博客统计信息
热门文章
最新评论
友情链接