[In、Out]を使用する場合と、C#からC++にパラメータを渡すときにrefを使用するだけの違いはありますか?C#でpinvokeを使用するときの[In、Out]とrefの違いは何ですか?
私はいくつかのSOの投稿を見つけましたが、MSDNのものもいくつかありますが、それは私の質問に近いものですが、それにはあまり答えていません。私は[In、Out]を使うのと同じようにrefを安全に使うことができ、マーシャラーはまったく違う動作をしないと思う。私の懸念は、それが違うことです、そして、C++は私のC#構造体が渡されることに満足できないでしょう。 [
Are P/Invoke [In, Out] attributes optional for marshaling arrays? は、私が使用する必要があると思わせる:私は、私が働いているコードベースで行われ、両方のものが...ここ
は、私が見つけたとを通して読んでいる記事です見てきましたIn、Out]
これらの三つの柱は、私は[IN、OUT]を使用する必要があると思いますが、私が代わりにREFを使用できることを確認し、それは同じになりますマシンコード。それは私が間違っていると思うので、ここで尋ねる。
具体的な例を挙げてください。 '[In、Out] ref int foo'と' ref int foo'の違いを知りたいですか?それが立てば、あなたの質問には詳細が不足しています。私はあなたが1つ(またはそれ以上)の具体的な例が必要だと考えています。 –
次のようなものがあります:[DllImport( "MyDll.dll"、CallingConvention = CallingConvention.Cdecl)] private static extern bool myFunction([In、Out] SomeStruct [] aStruct; [In 、Out]。 – PerryC
また、[In、Out]とref;を組み合わせただけですか? – PerryC