关于集合的类型

jcyluck 2012-10-08 11:42:46
WINFORM程序,我要建立一个这样的集合,第一列KEY值(STRING 类型),第二列STRING 类型,第三列 OBJECT类型,第四列STRING类型,用什么方法来构造这样的集合比较好?当然需要系统开销小的,求教!!
...全文
245 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
全栈极简 2012-10-09
  • 打赏
  • 举报
回复
多于多列的,还是用datatable吧。
zhanglong19891129 2012-10-09
  • 打赏
  • 举报
回复
4.0才有tuple 吧
jcyluck 2012-10-09
  • 打赏
  • 举报
回复
顶一个,期待更好的方案。。。
超人会飞 2012-10-09
  • 打赏
  • 举报
回复
Dictionary<string, Tuple<string, object, string>>
enaking 2012-10-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
用一个struct吧,

struct my1
{
public string m_strFirstColumn;
public string m_strSecondColumn;
public object m_rThirdColumn;
public string m_str4;
}

Dictionary<string,my1> a=new Diction……
[/Quote]
正解
wanghui0380 2012-10-09
  • 打赏
  • 举报
回复
datatable中可以存储 OBJECT类型吗? 没有问题。datatable是仿数据库实现,相当与一个内存数据库
还是那句话如果是数据库你要放object会怎么办?要么二进制流,要么序列化xml,要么干脆拆成另一张关联表。
ok。

二进制流--》object二进制序列和反序列可以
序列化xml--》这个也不必多说
datatable关联表--》ado.net允许滴,自己看msdn的 datatset里多个datatable关联表

-----------------------------------------------------------------------
list<T> 如果T不是类或是结构类型,允许多列的存在吗

如果T不是类或结构类型??这话说滴,net里还存在除了 引用类型 或 值类型以外的其他类型吗??
jcyluck 2012-10-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
我滴个脑子啊
对于winform,datatable其实可以,只是如果非要矫情啥开销,那么Dictionary<string,object> list<object>均可

变通,变通,还是变通!object 是对象,对象可以有任意属性,包括ls的Dictionary<string, Tuple<string, object, string>>仍然还是Dictionary<string,ob……
[/Quote]

datatable中可以存储 OBJECT类型吗?
list<T> 如果T不是类或是结构类型,允许多列的存在吗?
jcyluck 2012-10-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
用一个struct吧,

struct my1
{
public string m_strFirstColumn;
public string m_strSecondColumn;
public object m_rThirdColumn;
public string m_str4;
}

Dictionary<string,my1> a=new Diction……
[/Quote]


我原来在一些小型的集合中是用类来构造的,和你使用结构的方法一致,但现在这个集合会变得很大,所以就要考虑一下性能的问题,是用类好呢,还是用结构好呢?有没有更简单,更快的方法?
jcyluck 2012-10-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
Dictionary<string, Tuple<string, object, string>>
[/Quote]

高手啊,我还不知道这个 Tuple 的存在!!!
wanghui0380 2012-10-09
  • 打赏
  • 举报
回复
我滴个脑子啊
对于winform,datatable其实可以,只是如果非要矫情啥开销,那么Dictionary<string,object> list<object>均可

变通,变通,还是变通!object 是对象,对象可以有任意属性,包括ls的Dictionary<string, Tuple<string, object, string>>仍然还是Dictionary<string,object>的变体

所以如果你想要有唯一key,使用Dictionary<string,object> 和datatable都可以
如果不想唯一key,则使用datatable或者list <object>

当然,使用Dictionary<string,object>、Dictionary<string, Tuple<string, object, string>> 相对来说绑定麻烦点,个人还是推荐list<T>或datatable,绑定容易操作

ps:别看博客园那些没啥根据的水文,datatable其实并没有啥非常不能忍受的性能开销。
stonespace 2012-10-09
  • 打赏
  • 举报
回复
用一个struct吧,

struct my1
{
public string m_strFirstColumn;
public string m_strSecondColumn;
public object m_rThirdColumn;
public string m_str4;
}

Dictionary<string,my1> a=new Dictionary<string,my1>();

不过这样第一列会有冗余,也可以在my1中去掉m_strFirstColumn,
threenewbee 2012-10-09
  • 打赏
  • 举报
回复
Dictionary<string, Tuple<string, object, string>>

110,912

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧