|
Entries on Friday 29th May 2009
-1- 我们用C#、VB.NET语言编写的代码最终都会被编译成程序集或IL。因此用VB.NET编写的代码可以在C#中修改,随后在COBOL中使用。因此,理解IL是非常有必要的。 一旦熟悉了IL,理解.NET技术就不会有障碍了,因为所有的.NET语言都会编译为IL。IL是一门中性语言。IL是先发明的,随后才有了C#、VB.NET等语言。 我们将在一个短而精辟的程序中展示IL。我们还假设读者至少熟悉一门.NET语言。 a.il .method void vijay() { } 随后,我们用IL编写了一个非常短小的IL程序——它显然是不能工作的,并将它命名为a.il。那么我们怎么才能把它编译为一个可执行程序呢?不需要为此而焦急,Microsoft提供了一个ilasm程序,它的唯一任务就是从IL文件中创建可执行文件。 ... 更多……
在《.NET,你忘记了么?(八)—— 从dynamic到特性误用》一文中,飞林沙同学提到,使用范型会略微降低程序性能,因此在程序中使用List<Ojbect>是不合理的行为,应该使用ArrayList。这一点和老赵平时的观点相悖,老赵一直提倡,在.NET 2.0之后,要尽可能使用List<T>,情愿是List<Object>也不要使用ArrayList。不过个中原因与性能无关,我们稍候再叙述。飞同学的文章让我有了将范型与非范型进行性能比较的想法。这个比较非常容易,不过也得出了一些非常有意思的结论。 范型容器与非范型容器的性能比较 首先,我们来比较一种最“纯粹”的范型容器,它的目的是避免程序的其他方面对性能的影响。因此,这里我们构造两个最简单的容器,就是简单的模仿ArrayList和List<T>: public class MyArrayList { public MyArrayList(int length) { ... 更多…… |
|