tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。