我在Project 用一个结构来装载一些信息 Dictionary<string, Dictionary<string, int>> dic_Total = new Dictionary<string, Dictionary<string, int>> (); Dictionary<string, int> dic_Point = new Dictionary<string, int> (); // 就是 dic_Total装载着dic_Point // 在循环里面 装载满了一个 dic_Point时候将它
for ( int n = 0; n < 100; n++ ) {
dic_Point.Add ( n.ToString(), n ); if ( n % 5 == 0 ) {
dic_Total.Add (n.ToString(), dic_Point );
dic_Point.Clear ();
} }
Console.Read ();
发现执行之后 dic_Total每个记录的 Value都是相等的 就是 dic_Point最后那个值 , 96,97,98,99
当 for ( int n = 0; n <= 100; n++ ) 时 执行了 dic_Point.Clear ();
然后 dic_TotalValue的东西都清空了,是 Dictionary 记住的都是地址 ?
假如我想要存储这样结构应该怎么办? 求求解答..... 谢谢!
for ( int n = 0; n < 100; n++ ) {
dic_Point.Add ( n.ToString(), n ); if ( n % 5 == 0 ) {
dic_Total.Add (n.ToString(), dic_Point );
dic_Point.Clear ();
} }
Console.Read ();
发现执行之后 dic_Total每个记录的 Value都是相等的 就是 dic_Point最后那个值 , 96,97,98,99
当 for ( int n = 0; n <= 100; n++ ) 时 执行了 dic_Point.Clear ();
然后 dic_TotalValue的东西都清空了,是 Dictionary 记住的都是地址 ?
假如我想要存储这样结构应该怎么办? 求求解答..... 谢谢!
解决方案 »
- vs2010里面如何让JavaScript脚本能够匹配括号【☆】
- 在asp:GridView 为什么我要连点两次编辑才能切换到编辑模式?
- doc文档怎么操作?
- 一个看似简单却没有办法解决的问题!高手顶下!
- 水晶报表 绑定字段的问题
- 超级疑惑......当我在aspx中放一个table设置为宽度和高度都为100%时,为什么在显示的时候上下左右离边界都还有一段空白的距离,请问如何解
- 有谁做过网银接口支付这块?
- 上传文件
- 请问如何通过ado.net更新sqlserver的Datetime列
- 一个数据库问题
- 请问各位老大:怎么把GirdView里的HyperLinkField的文本连接变为图标连接啊?????
- 求一条SQL语句,高手帮忙
Dictionary<string, Dictionary<string, int>> dic_Total = new Dictionary<string, Dictionary<string, int>> (); Dictionary<string, int> dic_Point = new Dictionary<string, int> (); // 就是 dic_Total装载着dic_Point // 在循环里面 装载满了一个 dic_Point时候将它
for ( int n = 0; n <= 100; n++ ) {
dic_Point.Add ( n.ToString(), n ); if ( n % 5 == 0 ) {
Dictionary<string, int> dic_Point_Copy = new Dictionary<string, int> ();
dic_Point_Copy = dic_Point;
dic_Total.Add ( n.ToString (), dic_Point_Copy );
dic_Point_Copy.Clear ();
dic_Point.Clear ();
GC.SuppressFinalize ( dic_Point_Copy );
} }
Console.Read (); 这样也不行 能提供重新分配地址的方法吗?、
for ( int n = 0; n < 100; n++ ) {
dic_Point.Add ( n.ToString(), n ); if ( n % 5 == 0 ) {
Dictionary<string, int> dic_Point_Copy = new Dictionary<string, int> ();
foreach ( KeyValuePair<string, int> key in dic_Point ) {
dic_Point_Copy.Add ( key.Key, key.Value );
}
dic_Total.Add ( n.ToString (), dic_Point_Copy );
dic_Point.Clear (); } }
Console.Read ();
尝试了这种 是可以 但是 多了一重循环 我里面很多数据会很慢 ,求解决方法
Dictionary<string, Dictionary<string, int>> dic_Total = new Dictionary<string, Dictionary<string, int>> (); Dictionary<string, int> dic_Point=null;// 就是 dic_Total装载着dic_Point // 在循环里面 装载满了一个 dic_Point时候将它
for ( int n = 0; n < 100; n++ )
{
if(dic_Point==null)
dic_Point = new Dictionary<string, int> ();
dic_Point.Add ( n.ToString(), n ); if ( n % 5 == 0 )
{
dic_Total.Add (n.ToString(), dic_Point );
dic_Point = new Dictionary<string, int> ();
} }
Dictionary<string, Dictionary<string, int>> dic_Total = new Dictionary<string, Dictionary<string, int>> (); Dictionary<string, int> dic_Point = new Dictionary<string, int> (); // 就是 dic_Total装载着dic_Point // 在循环里面 装载满了一个 dic_Point时候将它
for ( int n = 0; n < 100; n++ )
{
dic_Point.Add ( n.ToString(), n ); if ( n % 5 == 0 )
{
dic_Total.Add (n.ToString(), dic_Point );
dic_Point = new Dictionary<string, int> ();
} }