Mal*_*ist 23 .net c# collections
我一直在使用Hashtable,但本质上,哈希表没有被排序,我需要在添加它们时保持一切顺序(因为我想以相同的顺序将它们拉出来).例如,如果我这样做:
pages["date"] = new FreeDateControl("Date:", false, true, false);
pages["plaintiff"] = new FreeTextboxControl("Primary Plaintiff:", true, true, false);
pages["loaned"] = new FreeTextboxControl("Amount Loaned:", true, true, false);
pages["witness"] = new FreeTextboxControl("EKFG Witness:", true, true, false);
Run Code Online (Sandbox Code Playgroud)
当我做一个foreach时,我希望能够按以下顺序得到它:
pages["date"]
pages["plaintiff"]
pages["loaned"]
pages["witness"]
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
LBu*_*kin 21
我相信.NET有OrderedDictionary类来处理这个问题.它不是通用的,但它可以作为一个体面的Hashtable替代品 - 如果你不关心严格的类型安全.
我已经写了一个关于这个类的通用包装器,我愿意分享.
http://msdn.microsoft.com/en-us/library/system.collections.specialized.ordereddictionary.aspx
Jon*_*eet 12
编辑:LBushkin是正确的 - OrderedDictionary看起来它的伎俩,虽然是非通用的方式.有趣的是,有多少专门的收藏品没有通用的等价物:((对于Malfist来说,改变LBushkin的接受答案是有意义的.)
(我认为......).NET没有任何内置功能.
基本上你需要保持一个List<string>以及一个Dictionary<string,FreeTextboxControl>.添加到字典时,将密钥添加到列表中.然后,您可以遍历列表并按插入顺序查找键.但是,当您移除或更换物品时,您需要小心.