我偶然会使用这种结构:
Dictionary> Foo = new Dictionary >();
这导致了这种代码:
foreach (DataRow dr in ds.Tables[0].Rows) { Listbar; if (!Foo.TryGetValue(dr["Key"].ToString(), out desks)) { bar= new List (); Foo.Add(dr["Key"].ToString(), bar); } bar.Add(dr["Value"].ToString()); }
你认为编写自定义的DictionaryOfList类是否值得自动处理这类事情?
还有另一种懒惰地初始化这些列表的方法吗?
你可以写一个扩展方法 - GetValueOrCreateDefault()或类似的东西:
foreach (DataRow dr in ds.Tables[0].Rows) { Foo.GetValueOrCreateDefault( dr["Key"] ).Add( dr["Value"].ToString() ) }
也许你甚至可以为整个初始化编写扩展方法?