2011-08-02 11 views
2

ポインタをシリアル化または逆シリアル化できますか?C#でポインタを直列化および逆シリアル化する方法はありますか?

public unsafe class Class001 
    { 
     public byte* pointer; 

     public Class001() 
     { 

      var byteArr = new byte[] {12, 54, 20}; 

      fixed(byte* ptr = byteArr) 
      { 
       pointer = ptr; 
      } 
     } 
    } 

は、私は、ファイルにポインタの進値を格納したファイルを読み込むことでリフレクションを使用してそれを再構築することができ、次のように私はクラスがあると?

私は、ファイル内のいくつかの値を保存して後で再構築することを示すために、シリアライゼーション/デシリアライズという言葉を使用しましたが、標準的なシリアル化プロセスである必要はありません。

+2

固定ブロックを離れるとすぐに、ポインタの値はもはや配列の先頭を指すことが保証されません。 –

+2

"serialize ... pointer"とは、 "ポインタの値*"または "データ*値*の値"を意味しますか? –

+0

@Marc Gravell、私はポインタの価値について話していました。とにかくジョン・グラントとマット・デイビーが言ったように、ポインタを逆シリアル化するのは無関係です。 –

答えて

7

絶対にありません!ポインタは、特定のメモリ位置への参照です。その特定のメモリアドレスの16進値を実際にシリアル化することもできますが、逆シリアル化すると、そのメモリアドレスにはまったく異なるものが含まれます。

+1

..つまり、無効な(割り当てられていない)アドレスを指し示すでしょう。 – Lucero

+0

答えをありがとう。私もそう思って、ただ確認したかったのです。 –