我做了Object Player(int number, string name, string guild, int hp, int mana)
从CSV文件我正在阅读一个玩家列表。
public static List<Player> GetPlayerFromCSV(string file)
{
List<Player> result = new List<Player>();
using (StreamReader sr = new StreamReader(file))
{
string line = sr.ReadLine();
if (line != null) line = sr.ReadLine();
while (line != null)
{
Player pl = AddPlayer(line);
if (pl != null) result.Add(pl);
line = sr.ReadLine();
}
}
return result;
}
private static Player AddPlayer(string line)
{
line = line.TrimEnd(new char[] { ';' });
string[] parts = line.Split(new char[] { ';' });
if (parts.Length != 5) return null;
Player pl = new Player(parts[0], parts[1], parts[2], parts[3], parts[4]);
return pl;
}
public override string ToString()
{
return Number + " - " + Name;
}
它给了我一个错误,因为0,3和4部分应该是字符串,因为它是一个字符串数组。
我已经尝试了parts[0].ToString()
等,但没有帮助
答案 0 :(得分:4)
您需要解析字符串:
Player pl = new Player(int.Parse(parts[0]),
parts[1],
parts[2],
int.Parse(parts[3]),
int.Parse(parts[4])
);
但这是最低限度 - 我还会在 Player
构造之前将解析移动到单独的语句,您可以添加错误检查/验证/等。
现在看来,如果第0,3或4部分不可解析,你将得到一个模糊的运行时异常,没有关于哪个值导致错误的上下文。