对象引用未设置为对象错误的实例?

时间:2013-11-16 15:04:00

标签: c#

在我的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('=');

有人知道如何解决这个问题和/或为什么会发生这种情况?提前谢谢!

2 个答案:

答案 0 :(得分:3)

尝试检查streemy.ReadLine是否返回null:

string line = streemy.ReadLine();

if(!string.IsNullOrEmpty(line))
{
  string[] thing = line.Split('=');
  player[userID].pickaxe = Convert.ToInt32(thing[1]);
}

你甚至可以进一步检查thingplayer[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]);