c# - 程序集中类的顺序

标签 c# class compiler-construction .net-assembly

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

还有..有办法改变它吗?


附加信息:您可以自己通过反射检查顺序,或者您可以使用像 ILDASM 这样的工具,禁用字母排序,然后您也会得到顺序。

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

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

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


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

最佳答案

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

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

我给你留下以下来自 Eric's blog 的引述:

Is compiling the same C# program twice guaranteed to produce the same binary output?

No.

关于c# - 程序集中类的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11213732/

相关文章:

c# - 如何检测任何特定驱动器是否为硬盘驱动器?

java - 如何在主方法中访问父类(super class)变量和方法?

c++ - 我如何知道将调用哪个函数?

javascript - 将 OO 语言编译为 Javascript

compiler-construction - 堆栈跟踪与 TCO : Do non-tail recursive languages generally have efficient stack frames?

c# - ASP.NET MVC 和 C# : HttpStatusCodeResult() vs HttpNotFound()

c# - WCF:如何通过 Datacontract 返回 .NET Framework 类?

c# - 如何在 Rhino Mocks 3.6 中将 Expect 设置为扩展方法

ruby - 在 Ruby 对象类中创建数组

python - `__class__`变量存储在python中的哪里,或者编译器如何知道在哪里找到它