C#の辞書:コレクションは、列挙操作が実行されないことがあり、変更されています

 

 

     次のようにC#を直接介して収集するための辞書と、これらの値を変更は、与えられ、コードが与えられる。修飾のセットを、列挙操作が実行されなくてもよいです。コードは以下の通りです

コードをコピー
ます。public void ForeachDic()     
{     
     辞書<文字列のInt32> DIC =新しい辞書<文字列のInt32>();   
     dic.Add( "1"、10);     
     dic.Add( "2"、20);     
     dic.Add( "3"、30);     
     foreachの(KeyValuePair <文字列、のInt32> DICでのkVp)     
     {     
         Console.WriteLineを(String.Formatの( "キー:{0};値:{1}"、kvp.Key、kvp.Value))。     
         DIC [kvp.Key] = 100; //このアクションは文句であろう:コレクションが変更されている、列挙操作が実行されなくてもよいです。    
     }     
}    
コードをコピー

 

       解決策は、次のように我々は、値の設定、変更、別のサイクルに配列を作成することができるということです。

コードをコピー
プライベート無効ForeachDic()     
{     
     辞書<文字列のInt32> DIC =新しい辞書<文字列のInt32>();   
     dic.Add( "1"、10);     
     dic.Add( "2"、20);     
     dic.Add( "3"、30);    
     文字列[] keyArr = dic.Keys.ToArray <ストリング>();     
     以下のために(int型私= 0;私<keyArr.Length; I ++)     
     {     
         DIC [keyStr [I] = DIC [keyStr [I] + 1。     
      }     
}   
コードをコピー

     次のようにC#を直接介して収集するための辞書と、これらの値を変更は、与えられ、コードが与えられる。修飾のセットを、列挙操作が実行されなくてもよいです。コードは以下の通りです

コードをコピー
ます。public void ForeachDic()     
{     
     辞書<文字列のInt32> DIC =新しい辞書<文字列のInt32>();   
     dic.Add( "1"、10);     
     dic.Add( "2"、20);     
     dic.Add( "3"、30);     
     foreachの(KeyValuePair <文字列、のInt32> DICでのkVp)     
     {     
         Console.WriteLineを(String.Formatの( "キー:{0};値:{1}"、kvp.Key、kvp.Value))。     
         DIC [kvp.Key] = 100; //このアクションは文句であろう:コレクションが変更されている、列挙操作が実行されなくてもよいです。    
     }     
}    
コードをコピー

 

       解決策は、次のように我々は、値の設定、変更、別のサイクルに配列を作成することができるということです。

コードをコピー
プライベート無効ForeachDic()     
{     
     辞書<文字列のInt32> DIC =新しい辞書<文字列のInt32>();   
     dic.Add( "1"、10);     
     dic.Add( "2"、20);     
     dic.Add( "3"、30);    
     文字列[] keyArr = dic.Keys.ToArray <ストリング>();     
     以下のために(int型私= 0;私<keyArr.Length; I ++)     
     {     
         DIC [keyStr [I] = DIC [keyStr [I] + 1。     
      }     
}   
コードをコピー

おすすめ

転載: www.cnblogs.com/wfy680/p/12026177.html