C# 泛型结构体问题

我建一泛型结构体<T>{PUbLiCTVa1Ue;}我怎么创建一个数组来放不同实例类型的结构体?另一个问题怎么反射OLEDBTYPE.Integer这种,我的目的是反射出... 我建一泛型结构体<T>{PUbLiC T Va1Ue;}我怎么创建一个数组来放不同实例类型的结构体?另一个问题怎么反射OLEDBTYPE.Integer这种,我的目的是反射出它映射的Int32基本类型,然后用Parse方法 展开
 我来答
百度网友cfe4d0f
2013-04-17 · TA获得超过1502个赞
知道小有建树答主
回答量:937
采纳率:100%
帮助的人:867万
展开全部
对于T不同的泛型类型 实质上对应的Type也是不同的
所以你无法用一个兼容的泛型集合来容纳它
只能用object[] 或者arrayList等非泛型集合 或者对应的接口

oleDbType这个东西。。似乎不用反射啊
在ado.net中 似乎你看不到中间类型或者兼容类型这种东西 除了DBnull
能取到的值都已经被转换为.net类型了 只要简单的判断type 然后用类型显示转换就可以直接使用了
追问
我是想用oleCmd.Parameters.Add("@duan" + Convert.ToString(i), zhiduaninfo[i - 1].dbType, zhiduaninfo[i - 1].zhiDuanSize).Value = zhiduaninfo[i - 1].value;这种自动参数化,zhiduaninfo是我自定的结构体类型,自定的结构体就是上述说的结构体<T>{....public oledbtype dbType;PUbLiC  T Value;}根据dbType的类型来转换value.
用arraylist进行封装拆装操作对性能有影响,用list,结构体本身也是泛型,也怎么写?
追答
那你应该考虑使用泛型接口来达到这种处理方式
或者退一步说 这种泛型根本没有意义
你实际上需要的是一个OleDbType detectDbType(Type)这个函数
即使你定义了这样一个结构体泛型

当你调用了parameters.Add函数 它依然只接受一个object类型 同样存在装箱操作 毫无意义
这个结构体实际上只需要一个object value就足够了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式