我正在将CSV文件解析为具有强类型属性的对象列表。这涉及到使用IConvertible
将文件中的每个字符串值解析为decimal
类型(int
、decimal
、double
、DateTime
等)。
我使用try catch
来处理解析失败的情况。然后记录此异常发生的位置和原因的确切详细信息,以供进一步调查。以下是实际的解析代码:
try
{
parsedValue = TypeDescriptor.GetConverter(type).ConvertFromString(dataValue);
}
catch (Exception ex)
{
// Log failure
}
问题:
当值被成功解析时,这个过程会很快。当解析包含大量无效数据的数据时,该过程可能会慢数千倍(由于捕获了异常)。
我一直在通过解析DateTime
来测试这一点。以下是性能数据:
这比以前慢了4500倍。
问题:
是否可以检查字符串值是否可以成功解析,而不必使用代价高昂的try catch
方法?或者,也许我应该用另一种方式来做这件事?
编辑:我需要使用 DateTime.TryParse
**) (而不是DateTime.TryParse
**),因为类型是在运行时确定的。**
https://stackoverflow.com/questions/16835750
复制相似问题