当人们关闭游戏以保存所有他们当前选择的宠物时,我会运行这些代码(这是为了学校不要担心我如何将其命名为"Squirtle",这里没有版权问题).有问题的代码是:
using (StreamWriter sw = File.CreateText(@"..\..\pets.txt"))
{
sw.AutoFlush = true;
foreach (Pet p in petList)
{
sw.Write(p.PetID + ' ');
sw.Write(p.Name + ' ');
sw.Write(p.HP + ' ');
sw.Write(p.Type + ' ');
sw.Write(p.Level + ' ' );
sw.Write(p.Rarity + ' ');
sw.WriteLine(p.Speed);
}
}
Run Code Online (Sandbox Code Playgroud)
逗号是空格,我只是添加了autoflush来尝试解决问题,但基本上无论我运行多少次,前两个,后两个和最后3个数据之间都没有空格,例如:32SQUIRTLE 77AQUATIC 41930.每次我运行时都会发生这种情况,并且想知道是否有人知道它为什么会这样做?如果使用StreamWriter或其他东西的空间和逗号臭名昭着,我也可以使用任何分隔符.
您正在执行Int + Char此操作的重载将导致Int + (int) Char将空间转换为其Unicode代码点并执行算术运算
你想做的是 p.PetID.ToString() + " "