我正在开发一个工具,我需要将字符串值转换为正确的对象类型.例如,将字符串转换"2008-11-20T16:33:21Z"
为DateTime
值.数值喜欢"42"
和"42.42"
必须转换成一个Int32
值和Double
分别值.
检测字符串是整数还是数字的最佳和最有效的方法是什么?是Int32.TryParse
或Double.TryParse
要走的路?
Int.TryParse
并Double.TryParse
有实际返回数字的好处.
类似的东西Regex.IsMatch("^\d+$")
有一个缺点,你仍然需要再次解析字符串以获取值.
在效率方面,是的,TryParse通常是首选路线.
如果您事先知道(例如,通过反射)目标类型 - 但不想使用switch
大块,您可能有兴趣使用TypeConverter
- 例如:
DateTime foo = new DateTime(2008, 11, 20); TypeConverter converter = TypeDescriptor.GetConverter(foo); string s = converter.ConvertToInvariantString(foo); object val = converter.ConvertFromInvariantString(s);