2011-08-02 25 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; 
      } 
     } 
    } 

我可以指針的十六進制值存儲在一個文件,並通過讀取文件使用Reflection它重建?

我使用單詞序列化/反序列化來表示將某些值保存在文件中並稍後重新構建它,它不需要任何標準的序列化過程。

+2

只要您離開固定塊,您就會意識到指針的值不再能保證指向數組的起始位置? –

+2

通過「serialize ...指針」,你的意思是「指針的值*」或「數據的值*指針」? –

+0

@Marc Gravell,我在談論指針的價值。無論如何,喬恩格蘭特和馬特戴維說,它無關反串行化一個指針。 –

回答

7

絕對不是!指針是對特定內存位置的引用。你確實可以序列化該特定內存地址的十六進制值 - 但是當你反序列化它時,那個內存地址肯定會包含完全不同的東西。

+1

.. 。或更有可能的是,它會指向一個無效的(未分配的)地址。 – Lucero

+0

感謝您的回答。我也這麼認爲,只是想確認一下。 –

相關問題