2012-04-19 13 views
4

C#の変数をディスクに保存して、プロジェクトの別のインスタンスで後で使用できるようにすることはできますか?可変データをディスクに保存する

例えば、私は次の例のような3つのフィールドを持つ構造体があります。私は、この構造体のインスタンスを持っている

struct MyStruct 
{ 
    byte[] ByteData; 
    int MyInt; 
    double MyDouble; 
}; 

を、のはMyStruct Sを言わせて、私はすべての私のフィールドに値を割り当てます。 このステップの後、私はこの変数を何らかの形でディスクに保存して、後でそれらの値をプログラムで使用できるようにしたいと思います。

私はこれらの値を.txtファイルにコピーできますが、変数を自分のディスクに保存して、プロジェクトの次の実行時にメモリに直接ロードできるようにしたいと思います。

それをそのまま私のプログラムの中にロードできるように、何とかディスクに保存することは可能ですか?

+6

シリアル化を見てください。 – CodeCaster

+1

私はそれをXmlにシリアライズします。その後、それを再度必要に応じて逆シリアル化します。 – BlueVoodoo

+0

実際には、テキスト形式で保存します。デバッグが容易になるためです。パフォーマンスは本当に重要ではないはずです... –

答えて

6
public void SerializeObject<T>(string filename, T obj) 
    { 
     Stream stream = File.Open(filename, FileMode.Create); 
     BinaryFormatter binaryFormatter = new BinaryFormatter(); 
     binaryFormatter.Serialize(stream, obj); 
     stream.Close(); 
    } 

    public T DeSerializeObject<T> (string filename) 
    { 
     T objectToBeDeSerialized; 
     Stream stream = File.Open(filename, FileMode.Open); 
     BinaryFormatter binaryFormatter = new BinaryFormatter(); 
     objectToBeDeSerialized= (T)binaryFormatter.Deserialize(stream); 
     stream.Close(); 
     return objectToBeDeSerialized; 
    } 

[Serializable] 
struct MyStruct 
{ 
    byte[] ByteData; 
    int MyInt; 
    double MyDouble; 
} 

オブジェクトをシリアル化可能としてマークすることを忘れないでください。

+0

@Archer実際に構造体はコードを使用してシリアル化できますが、なぜそれは不可能だと思いますか? – daryal

+0

私はSerializableを継承するクラスを作成し、これらの2つの関数を作成してファイルをディスクに保存し、ディスクから読み込みます。 – Simon

+0

@Simonは、直列化したいクラスに[Serializable]属性を追加するだけです。 – daryal

2

シリアライズを使用することができます。このMSDNのリンクSerializationを確認してください。

デフォルトのシリアル化オプションはbinaryXMLです。

関連する問題