在C#中使用什么格式进行数字的xml序列化?

Feo*_*akt 8 c# xml-serialization

当我写作

var d = 12.34D;
d.ToString();
Run Code Online (Sandbox Code Playgroud)

它给出了"12,34",但是当我用双字段序列化对象时,它给出了

var d = 12.34D;
d.ToString();
Run Code Online (Sandbox Code Playgroud)

这是因为XmlSerializer使用了一些特定的格式/文化?到底是什么?我查看了Double的源代码,但没有看到IXmlSerializable的实现.谢谢.

Pat*_*man 8

用于转换值的XmlSerializerWriter用途XmlConvert.ToString.

相关部分从类是这个:

return value.ToString("R", NumberFormatInfo.InvariantInfo);
Run Code Online (Sandbox Code Playgroud)

所以它使用了不变文化,它恰好输出符合XML RFC的字符串(所以作为小数分隔符的句号).

格式说明"R"被记录在这里:

往返("R")格式说明符尝试确保将转换为字符串的数值解析回相同的数值.仅对Single,Double和BigInteger类型支持此格式.

这意味着double在反序列化字符串值时,另一端将产生相同的结果.