0

ここ数時間、作成中のゲームに単純なセーブ/ロード機能を実装する方法について掘り下げてきました。

セーブデータはテキストファイルに保存されており、ゲーム中にプレイヤーと敵の位置、スコアなどを保存できます。

これには StreamWriter と StreamReader を使用していますが、これを using ステートメントで実装するか、try-catch で実装するかを決定するのに苦労しています。

スペースを節約するために、基本的にロード メソッドと同じであるため、Save メソッドのみをリストします。

使用:

 static void SaveAccounts(string path)
      {

            using (StreamWriter writer = new StreamWriter(path))
            {
                writer.WriteLine(accountNumber);
                writer.WriteLine(name);
                writer.WriteLine(address);
                writer.WriteLine(balance);     
            }
      }

キャッチしてみる

    public void Save(StreamWriter writer)
     {
        writer.WriteLine(accountNumber);
        writer.WriteLine(name);
        writer.WriteLine(address);
        writer.WriteLine(balance);
     }

    public void Save(string filename)
    {
       StreamWriter writer = null;
        try
        {
            writer= new StreamWriter(filename);
            Save(writer);
        }
        catch (Exception e)
        {
            throw e;
        }
        finally
        {
            if (writer!= null) writer.Close();
        }
    }

この場合、スプライトの代わりに「アカウント」を使用しましたが、単純に見えました。

それで、あなたが何を使うかについて誰かが私に洞察を与えることができますか? もしあれば。

どうもありがとう

4

2 に答える 2

3

usingステートメントを使用する必要があります。

まったく同じことを行う 8 行の余分なコードを書く理由はありませんが、間違っています。
同じことを正しく行うコードを 4 行余分に書く必要もありません。

于 2013-04-16T00:49:14.217 に答える
1

try/catchさらに数行かかる場合でも、を使用します。なんで?using例外が発生したときに何が起こるかを制御できないためです。try/catchあなたと一緒に。

例として、保存プロセス中に例外が発生した場合に何が起こるか想像してみてください。プログラムを使用usingすると、プログラムが書き込むことができた情報が何であれ、ファイルを停止して閉じます。つまり、不完全です。ファイルの削除をtry/catch決定できます。また、一時ファイルにすべてを書き込み、すべてのコードが正常に機能する場合にのみ最終的な場所にコピーし、そうでない場合は一時ファイルを削除することもできます。

于 2013-04-16T01:13:18.050 に答える