1
我有以下的扩展方法铸造/类型的转化效果
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));
@Luke,普通投射不总是工作,而Convert.ChangeType似乎总是返回正确的值,无论我扔在它的类型。 – CaffGeek 2010-01-21 17:30:06
@Chad:你可以举一些铸造不行的例子,但是'ChangeType'呢?例如,什么是列的基础类型/值,以及您尝试将其转换为哪种类型? – LukeH 2010-01-21 17:32:38
底层类型不尽相同,但它们应该总是可以转换为以下之一:string,int,bool,DateTime,byte,float,decimal。 – CaffGeek 2010-01-21 17:43:05