代码之家  ›  专栏  ›  技术社区  ›  CaffGeek

铸件/类型转换性能

  •  1
  • CaffGeek  · 技术社区  · 16 年前

    我有以下扩展方法

    public static T Field<T>(this DataRow row, string columnName)
    {
        return (T)Convert.ChangeType(row[columnName], typeof(T));
    }
    

    它起作用了,但我正在努力加快速度。有办法加快速度吗?使用case语句,然后键入特定的转换?我尝试过使用int.parse等一些方法,但即使我知道我想要返回int,我还是必须使用changetype来编译它。

     return (T)Convert.ChangeType(intVal, typeof(T));
    
    1 回复  |  直到 16 年前
        1
  •  4
  •   LukeH    16 年前

    您真的需要执行转换吗,还是只是进行强制转换?

    如果你只需要一个演员,那么一个简单的 return (T)row[columnName]; 应该有技巧。

    (顺便说一下,正在使用 Convert.ChangeType 真的会导致性能问题?这听起来像是不必要的微观优化。尽管如此,出于可读性的原因,我可能更喜欢纯转换,假设它满足您的要求。)