在过去的几个小时里,我一直在研究如何在我正在制作的游戏中执行简单的保存/加载功能。
保存数据被存储在一个文本文件中,在游戏期间玩家可以保存,存储玩家&敌人的位置,分数等
我正在使用StreamWriter &StreamReader对此和我有麻烦决定是否使用语句或尝试捕获来实现这一点。
为了节省空间,我只列出save方法,因为它们基本上与load方法相同。
使用: 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();
}
}
在这种情况下,我使用"accounts"来代替精灵,这样看起来更简单。
有谁能告诉我你会用什么吗?如果任何.
多谢
您应该使用using
语句。
没有理由写8行额外的代码来做完全相同的事情,但是错误的。
也没有理由编写额外的4行代码来正确地做同样的事情。
我会使用try/catch
,即使它需要更多的行。为什么?因为使用using
,当出现异常时,您无法控制会发生什么。对于try/catch
,你可以。
作为一个例子,想象一下如果在保存过程中出现异常会发生什么。使用using
,程序只是停止并关闭文件,无论它是什么,无论您的程序能够写入什么信息。也就是说,不完整。使用try/catch
,您可以决定删除该文件。您还可以将所有内容写入临时文件,并在所有代码都正常工作的情况下将其复制到最终位置,如果不正常,则删除临时文件。