我之前做过几个项目,我使用 System.Environment.Newline 作为我后来解析的保存文件的分隔符。
所有这些时候,它都是在一个我所知道的仅限Windows的环境中 - 我正在为我正在开发的一款游戏制作一个,它也将发布到mac和linux。在多平台上保存和解析这些会是一个问题吗?我正在解析 并捕获 \r。
我也使用.ToString() 用于没有文化规范的 int 转换 - 这会在 ints 中带回问题吗?我假设它会使用浮点数,因为它可能是 35.5 或 35,5,但解析任何一个都应该在系统中带回 35.5。
如果您正在处理多个操作系统,那么简短的回答是肯定的。但修复起来也很简单。
对于行尾,您可以使用正则表达式(或普通 ol' string.Replace
)规范化 EOL,这样当r
不跟n
时,就会变成n
,而rn
会变成正n
。或者更简单地说:根本不使用Environment.NewLine
,只是标准化n
,这可能是最好的选择。
如果希望ToString
调用(以及任何后续int.Parse
调用)忽略区域性,请尽可能使用CultureInfo.InvariantCulture
。它将解决您可能遇到的任何和所有(反)序列化问题。