タイトル : Re^6: 構造体のメモリコピー 投稿日 : 2005/01/14(Fri) 12:57 投稿者 : 魔界の仮面弁士
# 全文引用は不要かと。 > 個別対応は最後の手段としたいと思います。 う〜ん。原始的な方法は「最初の手段」ではなく、「最後の手段」ですか。(^^; という事は、個別に割り当てる方法は、できる限り使いたくない。 メンバ全体を一括で渡したい――という事ですね。 その場合の対処方法は、先の回答(No.1269)に書いた通りですよ。 すなわち、System.Runtime.InteropServices.Marshal を使う事になります。 (MarshalクラスのCopyメソッドは、MoveMemory APIと同様の働きをします) ただしそのままでは、文字列型のサイズや文字コードなどが未定義なので、 各種属性を用いて、構造体の定義に手を加える必要があります。 いずれにしても、Marshalクラスは、マーシャリングのために用意されたクラスなので、 P/Invoke以外の目的で使うのはお奨めしません。アンマネージドですしね。 API呼び出し用の構造体ではなく、.NETの世界だけで用いる構造体ならば、 『BinaryReaderを渡すと、それを個別のメンバに割り当てるメソッド』を 用意する方が、分かりやすくスマートかと思いますよ。 そもそも、『構造体のメモリコピーが必要な理由』って何なのでしょうか? それがわかれば、より良い回答ができるかも。(^-^A |