什么决定了程序集中类的顺序?
还有..有办法改变它吗?
补充信息:你可以自己通过反射检查顺序,也可以使用ILDASM之类的工具,禁用字母排序,然后你也会得到顺序。
顺序似乎是由编译器以一种奇怪的方式确定的。
我已经尝试过一些事情..比如重命名类(顺序保持不变),还编辑 .csproj 文件以更改 .cs 文件的顺序。
我的主要关注点是 VS2008、C#、.net 3.5。
更新:我确实有一个场景,其中顺序很重要(外部程序通过反射通过我的程序集)-并且我需要那里的特殊顺序。 除此之外 - 你是完全正确的 - 顺序真的不重要。
我要在这里坚持说这是一个实现细节并且很可能由任何特定的编译器决定。
由于这是一个实现细节,您不应该或不需要担心。 当然,如果这确实很重要(不明白为什么),您可以随时编写自己的 IL。
我给您留下以下来自 Eric 博客的引述:
两次编译相同的 C# 程序保证产生相同的结果 二进制输出?
没有。
什么决定了程序集中类的顺序?
编译器。
还有..有办法改变它吗?
直接编写自己的IL。
话虽这么说,程序集中类型的顺序并不重要。 您可以使用这些类型,而无需考虑它们的顺序。