4

アセンブリ内のクラスの順序を決定するものは何ですか?

そして..それを変更する方法はありますか?


追加情報:自分でリフレクションを使用して順序を確認するか、ILDASMなどのツールを使用してアルファベット順の並べ替えを無効にすると、順序も取得できます。

順序は、コンパイラによって決定される奇妙な方法のようです。

クラスの名前を変更したり(順序は同じまま)、. csprojファイルを編集して.csファイルの順序を変更したりするなど、すでにいくつかのことを試しました。

私の主な焦点はVS2008、C#、.net3.5です。


更新:注文が重要なシナリオがあります(外部プログラムがリフレクションを介してアセンブリを通過します)-そこで特別な注文が必要です。これとは別に、あなたは完全に正しいですが、順序は実際には重要ではありません。

4

2 に答える 2

2

ここで首を突き出し、これは実装の詳細であり、特定のコンパイラによって決定される可能性があると言います。

これは実装の詳細であるため、心配する必要はありません。もちろん、これが本当に重要な場合(理由がわからない場合)は、いつでも独自のILを作成できます。

エリックのブログから次の引用を残します:

同じC#プログラムを2回コンパイルすると、同じバイナリ出力が生成されることが保証されていますか?

いいえ。

于 2012-06-26T18:32:01.303 に答える
1

アセンブリ内のクラスの順序を決定するものは何ですか?

コンパイラ。

そして..それを変更する方法はありますか?

独自のILを直接記述します。


そうは言っても、アセンブリ内のタイプの順序は実際には重要ではありません。順序に関係なくタイプを使用できます。

于 2012-06-26T18:31:12.477 に答える