稍不留神产生代码垃圾

简介:

 一个类型允许定义多个实例构造器,在使用过程中确实是十分方便的。但是,在定义这些构造器时,如果稍不留神,可能就使你的代码编译后产生了好多不必要的垃圾,增加了程序集的大小,也不够简洁。

例如:

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,如需转载请自行联系原作者

相关文章
|
2月前
|
机器学习/深度学习 自然语言处理 算法
代码的前世今生详细介绍
7月更文挑战第8天
46 4
|
4月前
|
存储 API C语言
C/C++爱心代码
C/C++爱心代码
1939 2
|
11月前
|
设计模式 存储 Java
写出漂亮代码的45个小技巧(上)
大家好,我是三友~~ 不知道大家有没有经历过维护一个已经离职的人的代码的痛苦,一个方法写老长,还有很多的if else ,根本无法阅读,更不知道代码背后的含义,最重要的是没有人可以问,此时只能心里默默地问候这个留坑的兄弟。。
写出漂亮代码的45个小技巧(上)
|
设计模式 消息中间件 前端开发
这45个小技巧,让你的代码突然又优雅了
这45个小技巧,让你的代码突然又优雅了
最近特火的爱心代码来了
最近因为一部《点燃我温暖你》的电视剧而爆火的爱心代码不会还有人不会制作吧。
最近特火的爱心代码来了
|
存储 SQL 缓存
10行代码!
10行代码!
201 0
10行代码!
|
前端开发 C++
这几行代码,真的骚!
这几行代码,真的骚!
这几行代码,真的骚!
|
程序员 数据库
【评论】好代码不值钱
导读: 原文来自geekm.ag 上一篇《 Good code is cheap code》,由国内整理编译《好代码不值钱》。作者认为好的程序员和伟大的程序员之间的区别就在于伟大的程序员理解他们的模式。
872 0
我所经手过的最差代码
译文链接:我所经手过的最差代码
548 0