5

私は 64 ビットのプロセスで、intサイズは 8 バイトです。

32ビットにコンパイルされたdllを参照しています。

この dll には、パラメーターを受け取る関数がありintます。

何が起こるか?

「コンテナ」に送信し8 byteていますか?4 byte

4

4 に答える 4

16

いいえ、64 ビット/C# では、anintはまだ 4 バイトです。

C# では、int常にエイリアスにすぎませんglobal::System.Int32

変更されるのは参照サイズとポインターサイズですが、それはすべて IL によって抽象化されているため、何も変更する必要はありません。ただし、CLI は 32 ビットxor (nand?) 64 ビットのみになることに注意してください。そのうちの 1 つを「任意の CPU」にする必要がある場合があります。

于 2012-06-12T07:31:06.743 に答える
3

常にマップされるSystem.Int32ため、必要なのは4つだけです

于 2012-06-12T07:32:25.577 に答える
3

C# では、int は 32 ビット アセンブリと 64 ビット アセンブリで同じサイズです。intorInt32は常に 32 ビットですが、longorInt64は常に 64 ビットです。

于 2012-06-12T07:32:38.977 に答える
1

intC# では常に 32 ビット (4 バイト) ですが、C++ などの他の言語ではそうではありません。 System.IntPtrx86 マシンでは 4 バイト、64 ビット OS では 8 バイトです。OS 依存の整数型が必要な場合は、これを使用します。

于 2012-06-12T07:51:57.680 に答える