4

什么决定了程序集中类的顺序?

而且..有没有办法改变它?


附加信息:您可以自己通过反射检查排序,也可以使用 ILDASM 之类的工具,禁用字母排序,然后您也将获得订单。

顺序似乎以一种奇怪的方式由编译器确定。

我已经尝试了一些事情......比如重命名类(顺序保持不变),还编辑 .csproj 文件以更改 .cs 文件的顺序。

我的主要关注点是 VS2008、C#、.net 3.5。


更新:我确实有一个订单很重要的场景(外部程序通过反射通过我的程序集) - 我需要特殊的订单。除此之外 - 你是完全正确的 - 顺序真的不重要。

4

2 回答 2

2

我要在这里伸出我的脖子说这是一个实现细节,很可能由任何特定的编译器决定。

由于这是一个实现细节,您不应该或不必担心。当然,如果这真的很重要(不明白为什么),您总是可以编写自己的 IL。

我将Eric 博客中的以下引述留给您:

两次编译相同的 C# 程序是否保证产生相同的二进制输出?

不。

于 2012-06-26T18:32:01.303 回答
1

什么决定了程序集中类的顺序?

编译器。

而且..有没有办法改变它?

直接写自己的IL。


话虽如此,程序集中类型的顺序实际上并不重要。您可以使用这些类型而不考虑它们的顺序。

于 2012-06-26T18:31:12.477 回答