thespoke死活登不上去了,把那里的转过来吧。
今天用了一个下午的时间想在C#里找到一个可以保存key、value值的类,怀念用Delphi的时候呀。
Hashtable、ListDictionary、SortedList、StringDictionary,都试了试,用来保存ini文件里的key和value。
ini文件内容如下:
Tkey1=Bvalue1
Bkey2=Tvalue2
Akey3=Svalue3
Skey1=Avalue1
ckey2=Fvalue2
Fkey3=cvalue3
代码:
string[] strs = s.Split('~');
s = "";
//在这里试了这些对象
ListDictionary ld = new ListDictionary();
foreach(string v in strs)
{
string S = v.Trim();
if (S != "")
{
ld.Add(S.Substring(0, S.IndexOf("=")), S.Substring(S.IndexOf("=") + 1, S.Length - 1 - S.IndexOf("=")));
}
}
foreach ( DictionaryEntry de in ld )
{
MessageBox.Show(de.Key.ToString() + " " + de.Value.ToString());
}
结果:
Hashtable:排序有些怪异,T,A,B什么的,不知道是按什么给排了序。
SortedList:这个东东不错,按a-z把key的顺序排列好,还可以用index来访问,这点比其它的方便多了,可是我中间可是有个小写的c呀,还是把它排在了中间,难道是里面处理时全给ToUpper了?
StringDictionary:排序和Hashtable一样,只不过key和value的类型换成了string。
ListDictionary:这是个好东东,没有排序,原来是什么样的就是什么样。
可惜的是Hashtable,StringDictionary,ListDictionary都不能用index做为索引,只能用foreach和GetEnumerator()来做循环,这个比较郁闷,不过支持用key的值做索引,知道key找value方便多了。
IDictionaryEnumerator myEnumerator = myCol.GetEnumerator();
Console.WriteLine( " KEY VALUE" );
while ( myEnumerator.MoveNext() )
Console.WriteLine( " {0,-25} {1}", myEnumerator.Key, myEnumerator.Value );
Console.WriteLine();