Web サービスで out パラメータとして整数を持つ dll メソッドをラップしました。テストでは、-1 を期待していたときに、代わりに 65,535 を取得していることがわかりました。dll が 16 ビット整数を使用していて、コードで外部 dll を参照するときに標準の .NET 32 ビット整数を指定していたことに気付きました。これは、16 ビット整数を指定することですぐに修正され、すべて問題ありません。
私の質問は、なぜこれが起こったのですか?32 ビット整数を 16 ビット整数に合わせようとすると、オーバーフローが発生することは理解できましたが、なぜこれが逆に発生するのかはよくわかりません。明らかに、このタイプのタイプ間のキャストに関する私の理解は少し不足しているため、ガイダンスをいただければ幸いです。