使用 system.environment.newline 和独立于文化的 .ToString() 进行解析会给我带来问题

Is using system.environment.newline and culture independent .ToString() for parsing going to cause me problems

我在使用 System.Environment.Newline 作为我稍后解析的保存文件的分隔符之前从事过几个项目。

所有这些时候,它一直处于我所知道的 windows 环境中 - 我正在为我正在开发的游戏制作一个将发布到 mac 和 linux 还有。在多平台上保存和解析这些会成为问题吗?我正在解析 \n 并捕获 \r。

我还使用 .ToString() 进行没有区域性规范的 int 转换 - 这会在 int 中带来问题吗?我假设它会与浮点数一起使用,因为它可能是 35.5 或 35,5,但解析其中任何一个都应该在系统中带回 35.5。

如果您要处理多个操作系统,那么简短的回答是肯定的。但修复起来也很简单。

对于行结尾,您可以使用正则表达式(或普通 ol' string.Replace)规范化 EOL,这样 \r when not followed by \n 变为 \n\r\n 变为 \n。或者更简单:根本不要使用 Environment.NewLine,只需标准化为 \n,这可能是最好的选择。

如果您希望 ToString 调用(以及任何后续 int.Parse 调用)忽略文化,请尽可能使用 CultureInfo.InvariantCulture。它将解决您可能 运行 遇到的所有(反)序列化问题。