C++/CLI の規格は ECMA-372 ですが, これによると
「C++ の型と CLI の型の対応は実装依存」
Each of the fundamental types has a corresponding value class type provided by the implementation; the correspondence is implementation-defined
(8.2.1 Fundamental types and the CLI)
だそうです>#3.
「ただC++ CLIだと処理系として扱う型のサイズは確定します」というのはこの限りにおいて正しいけど, それは C や C++ でも同じなので C や C++ と C++/CLI とを区別する意味はないと思います.
つまり kokumura さんの使った処理系では「C++/CLI の ULONG と C# の UINT が対応している」ということになりますが, 他の処理系でこの対応が保障されるということではないと思います.
もちろん (#2 に書いたように) System 名前空間内の型を使えば (CTS の型に対応するので) C++/CLI と C# との間で厳密な型の一致をさせることも可能です.
質問者
お礼
運用後にマシンを変えなきゃってときのことを考えると恐ろしいですね。
System 名前空間内の型を利用する方法を検討したいとおもいます。
ありがとうございました。
お礼
わかりやすいご回答ありがとうございます。 C++の「long型」はC#の「int型」に対応しているから、 C#側で使う場合はint型のまま使えば、よいということですね。 他にも、C++の「char型」が、C#では「sbyte型」に変わっていたのですが、同じ理由なのでしょうね。 ありがとうございました!。