我创建了一个为某些参数生成唯一字符串键的方法。但如果使用相同的值调用,则使用相同的键。
我只接受基元类型、字符串、日期时间、guid和nullable(因为我将类型附加在一起,所以可以区分谁是int,谁是int?),因为我可以将所有内容转换为字符串,而不会丢失值或精度。(对于float和double,使用toString(“r”),使用datetime toString(“o”)。
存在一个简单的方法来知道哪些类型可以在字符串中转换而不发生冲突?这个转换是如何进行的(我之前说过,float、double和datetime有特定的方法)
谢谢
确保在往返过程中使用区域性不变的字符串是很重要的。
因此我通常使用 XmlConvert.ToXxx() 方法转换为字符串并从字符串中进行解析;这些方法使用的是设计用于往返的标准XML格式。查看那里支持的类型还可以让您了解哪些类型是开箱即用的。
XmlConvert.ToXxx()
对于更通用的方法,可以使用 IConvertible 接口方法,它们都接受 IFormatProvider 它可以是不变的区域性( CultureInfo.InvariantCulture ,但这并不真正需要往返功能。
IConvertible
IFormatProvider
CultureInfo.InvariantCulture