result= (T)o ;
修改为
result = (T)Convert.ChangeType(o,typeof(T));
漂亮
当T为byte时貌似结果不对
因为编译器不知道 T 是 int 类型,所以转换无效。
简单的方法:result = (T)(object)o;
ExecuteScalar(); 本来就是返回的是 object 类型,你这个根本就解决问题吗
@夜星冷: 看错了,以为 ExecuteScalar 的返回类型是 int 。你这样,在调试的时候设个断点,通过 o.GetType(),看下它的类型是什么。
你确定返回的是 5555,是int类型
5555 确定是 第一行 第一列
这个涉及到泛型的逆变和协变