c# - 从基本系统类型到字符串的转换是否可逆?

标签 c# type-conversion

当在字符串中存储一个对象时,我能否确保将其转换回成功执行是否取决于其他因素?

DateTime dt = DateTime.UtcNow;
string pattern = dt.ToString();
DateTime retDt = DateTime.Parse(pattern);

这个问题问的是以下对象类型:

  • 时间跨度
  • 日期时间
  • 内部
  • 漂浮

我已尝试阅读多个论坛,但没有看到任何矛盾的例子。我也没有 从我的代码中得到任何异常,但我确信我还没有尝试所有可能的输入/场景。

最佳答案

当使用 ToString 时,您可以为数字和时间指定一种格式(有关更多信息,请参阅 this topic)。

在许多这些情况下,您希望使用的格式是往返格式(“R”表示 Single、Double 和 BigInteger 类型,“O”表示 DateTime。)这种格式确保所有信息都传递给字符串,并且可以解析回完全相同的数据。

IFormatProvider 传递给 ToString 对于避免语言环境问题也是必不可少的(例如,不同的语言环境可以使用不同的字符作为小数点分隔符。)使用静态 CultureInfo.InvariantCulture 解决了这个问题。

最后,如果您尝试持久化数据然后检索它,您可能需要考虑使用序列化器,它接受整个类并将它们写入各种格式。 .NET 有几个序列化程序,其中两个最突出的是 BinaryFormatter(二进制)和 DataContractSerializer(XML)。

关于c# - 从基本系统类型到字符串的转换是否可逆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18941833/

相关文章:

c# - 添加或更新没有引用类型值的字典

c# - 从 ASP.NET Web 应用程序运行 .exe 的权限问题

unsigned int 和 unsigned char 的比较

swift - 在 Swift 中创建一个具有两种情况的可转换为 Bool 的枚举

c# - 在 C# 中从 TabControl 中删除 tabPage 时引发什么事件

c# - 如何在 VS 2008/C# 中获得类似 Eclipse 的类大纲?

c# - 初始化未知类型的通用对象

c# - 如何将任意对象转换为枚举?

c# - "Convert.ToString(Nullable<int>)"和 "Nullable<int>.ToString()"之间的区别?

c++ - C:将大数从字符串转换为以 n 为模的整数