在过去的几个小时中,我一直在研究如何在我正在制作的游戏中实现简单的保存/加载功能。

保存的数据存储在一个文本文件中,在游戏过程中玩家可以保存,存储玩家和敌人的位置,得分等。

我为此使用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();
        }
    }

在这种情况下,我使用了“帐户”代替了子画面,看起来更简单了。

那么,有谁能给我提供您所使用的任何见解? 如果有的话。

非常感谢

===============>>#1 票数:3 已采纳

您应该使用using语句。

没有理由再写8行完全相同的代码,但是这样做是错误的。
也没有理由再多写4行代码来正确完成相同的操作。

===============>>#2 票数:1

我会使用try/catch即使它需要多几行。 为什么? 因为using您无法控制发生异常时的情况。 通过try/catch您可以做到。

例如,假设在保存过程中发生异常会发生什么情况。 using该程序将停止并关闭文件,无论它是多少,无论程序能够写入什么信息。 也就是说,不完整。 使用try/catch可以决定删除文件。 您还可以将所有内容都写入临时文件,并仅在所有代码都能正常工作的情况下复制到最终位置,否则,不仅删除临时文件。

  ask by Lee Brindley translate from so

未解决问题?本站智能推荐: