实现一个方法,装箱与拆箱的问题!
写这篇文章的目的是因为碰到了问题。
方法名: public T ExecuteFirstResult<T>(string sql)
核心代码:(T)cmd.ExecuteScalar();
调用:DBHelper.DB.ExecuteFirstResult<int>(sql)
--代码是可以经过编译的
概念:
装箱是说,将值类型转换为引用类型,反之将引用类型转换为值类型则为拆箱。
拆箱则必须强制转换,所以调用代码运行会发生错误,无法将object拆箱,则必须强制转换,比如说Convert.ToInt32()
问题是我这里使用了T,之所以是T,是因为想让调用方便,不需要再做ObjectConvert.
解决方法:
public static object ChangeType(object value, Type conversionType);// 返回一个指定类型的对象,该对象的值等效于指定的对象。
return (T)Convert.ChangeType(o, typeof(T)); 完美解决!!
感谢小林哥。