C# 关于小数分隔符的问题

C# 关于小数分隔符的问题,c#,xml,separator,C#,Xml,Separator,十进制分隔符(“.”或“,”)是否取决于CurrentCulture 我在序列化XML时遇到问题。 当我键入“,”作为分隔符时,我有一个异常。(文化设置为DE DE) 问候 示例(TestProperties是我自己的测试类) 这完全取决于上下文。您提到xml;在xml中,格式通常用非文化区域性表示(这意味着:。是十进制,是千等)。类似地,xml具有日期/时间的特定表示形式 如果您通过XmlWriter,XElement,XmlSerializer(等)构建xml,这将是自动的;如果您是手工构建

十进制分隔符(“.”或“,”)是否取决于
CurrentCulture

我在序列化
XML
时遇到问题。 当我键入“,”作为分隔符时,我有一个异常。(文化设置为DE DE)

问候

示例(TestProperties是我自己的测试类)


这完全取决于上下文。您提到xml;在xml中,格式通常用非文化区域性表示(这意味着:。是十进制,是千等)。类似地,xml具有日期/时间的特定表示形式

如果您通过
XmlWriter
XElement
XmlSerializer
(等)构建xml,这将是自动的;如果您是手工构建的,很可能会混淆(不同表示的混合)


如果数据不是预期的格式,则可能必须将其加载到
字符串
属性(而不是
浮点
等)中,并单独处理它。

十进制分隔符由当前区域性确定,但是,对于XML序列化,不考虑当前区域性。必须使用XML约定;XML中的小数分隔符将始终为点


如果手动构建XML,则应使用该类确保所有数据类型在XML中的格式正确。

它是特定于区域性的,但这取决于您正在执行的操作。你能给我们看一下代码吗?谢谢你的回复。我还有一个问题。我正在使用XMLSerializator。它是使用不变量文化还是使用CurrentCulture?如果当前,我可以使用不变量吗?我使用的系统具有不同的区域性,因此我很难对这些系统进行有效的序列化或反序列化。@ogrod87它是xml-所以不变,再加上其他一些东西(例如日期时间格式不同等);在(反)序列化的时候,文化不应该是一个问题——但是,当然,在这之后你做的任何事情都受到文化的影响。你看到的是一个特定的问题吗?是的。当我试图用点或逗号作为十进制分隔符序列化值时,就会发生这种情况。取决于文化和XML,我有不同的价值观。我想规范化xml。无论我是用逗号还是点输入值,我都希望用点输入XML值。@ogrod87您有没有一个示例来说明如何序列化它?否则我只是guessing@ogrod87在这个例子中,什么是需要的xml,什么是实际的(不需要的)xml?感谢您的回复。我还有一个问题。我正在使用XMLSerializator。它是使用不变量文化还是使用CurrentCulture?如果当前,我可以使用不变量吗?我使用的系统具有不同的文化背景,因此我很难对这些系统进行有效的序列化或反序列化。
TestProperties properties = new TestProperties 

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureName);

double tempValue = 1.23 // Or 1,23
properties.DoubleValue = tempValue;

XmlSerializer serializer = new XmlSerializer(typeof(TestProperties));
TextWriter textWriter = new StreamWriter(XMLPath);
serializer.Serialize(textWriter, properties);
textWriter.Close();


public class TestProperties
    {   
        private double _doubleValue;
        [XmlElement("Double")]
        public double DoubleValue
        {
            get { return _doubleValue; }
            set { _doubleValue = value; }
        }
    }