在我的c#程序中,我想要做的就是在游戏中你说什么!mypickaxe,它告诉你你有什么镐。最近我找到了一种方法将它保存到.txt文件,因此数据可以使用多次,但当然我得到“对象引用未设置为对象的实例”。以下是出现错误的部分:
StreamReader streemy = new StreamReader("pickaxes.txt");
string line = streemy.ReadLine();
string[] thing = line.Split('=');
player[userID].pickaxe = Convert.ToInt32(thing[1]);
在.txt文件中,它保存如下: 用户名=镐 所以它应该得到数字,但我在这一行得到了错误:
string[] thing = line.Split('=');
有人知道如何解决这个问题和/或为什么会发生这种情况?提前谢谢!
答案 0 :(得分:3)
尝试检查streemy.ReadLine
是否返回null:
string line = streemy.ReadLine();
if(!string.IsNullOrEmpty(line))
{
string[] thing = line.Split('=');
player[userID].pickaxe = Convert.ToInt32(thing[1]);
}
你甚至可以进一步检查thing
和player[userID]
if(!string.IsNullOrEmpty(line))
{
string[] thing = line.Split('=');
if(thing.Count() > 1 && player[userID] != null)
player[userID].pickaxe = Convert.ToInt32(thing[1]);
}
我也会将流包装在using
块中:
using(StreamReader streemy = new StreamReader("pickaxes.txt"))
{
//code omitted
}
答案 1 :(得分:0)
我建议使用File.ReadAllLines()
来避免所有错误。
string [] line=System.IO.File.ReadAllLines("pickaxes.txt");
string[] thing = line[0].Split('=');//here 0 can be any required index
player[userID].pickaxe = Convert.ToInt32(thing[1]);