C#中的强制转换和性能

1 .net c# performance casting

我正在编写一个代码,用于从数据库中选择数据,将其存储在DataTable中,执行一些硬数学运算,然后更新数据库.

主要问题是由于DataRow集合返回列作为对象类型,它需要大量的转换,迫使我每行执行float.parse()并使其耗时.

你们有什么建议我可以避免这种情况吗?

提前致谢.

Jon*_*eet 7

float.Parse一样的铸件.您应该能够实际投射该值,例如

(float) row["Foo"]
(double) row["Foo"]
(decimal) row["Foo"]
Run Code Online (Sandbox Code Playgroud)

取决于类型.这将避免做任何解析 - 你只是拆箱.如果值不是您想要的类型,则可能需要取消装箱进行转换,例如

(float) (double) row["Foo"]
Run Code Online (Sandbox Code Playgroud)

目前还不清楚你是如何使用它的DataTable,但我建议创建你自己的模型类,它以强类型的方式表示一行表,转换为往返DataRow- 或者使用强类型DataSet来开始.这样,你的代码将是一个很多更清晰,你只需要执行转换为代码的一小部分.