我们在编写程序的时候,经常会引用各种各样的DLL。时间长了,有些DLL可能仅仅是引用了一下而已,其实代码里面根本就没有用到。
那么,这些没有用到的引用,会不会对我们的代码产生影响呢?我也不知道,做个实验试试看好了。
假如,我们写了两个DLL,分别为A和B。其中,A引用了B。不过呢,在A的代码里面,并没有使用到B。现在编译A,然后用ILDasm查看一下。
在ILDasm的界面下,选择“视图。元信息。显示”,从显示的内容可以明显的看出来,在A的代码里面,并没有B。其实,只要看AssemblyRef中有没有B就可以了。
如此看来,只要代码里面没有用到,那就不会对编译好的代码有影响。
可是,毕竟我们还是引用了B,总会有些影响的吧。首先查看一下VS的输出,可以清楚的看到对B的refercence。这直接导致了B这个DLL被拷贝到了A的生成目录下面。而且,如果这个时候还没有B的话,还会自动导致B被编译。
这样看来,影响也很明显了:
1,会导致A的生产目录下面出现B,虽然没有用吧。当东西多了之后,我们也不知道哪个有用,只好都保留。这就无形中增加了生成的程序的大小。
2,至少理论上,会多少降低一点生成A的时间吧。
下面继续。我在A里面,不仅仅是引用B,我还using它一下,看看会如何。
经过测试,发现IL代码没有任何变化,也就是说,如果只是using了,跟仅仅是引用B的效果是一样的。