.NET開発者のためのブログメディア
JavaScriptでのHTML要素とは?追加・削除・置換・コピーの操作方法についてご紹介
目次
[C#]Dictionaryをforeachで繰り返し処理する方法とは?
今回は、C#でDictionaryをforeachで繰り返し処理する方法について説明します。foreachを使って、keyとvalue、keyのみ、valueのみなど、様々な繰り返し処理ができます。また、繰り返し処理でindexも取得できます。
C#での、Dictionaryをforeachで繰り返し処理する方法に興味のある方はぜひご覧ください。
基本的な繰り返し処理
C#でDictionaryをforeachで繰り返し処理する方法を紹介します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
using System.Collections.Generic;
public class Hello{
public static void Main(){
// 初期化
var mymap = new Dictionary<string, string>(){
{"key1", "value1"},
{"key2", "value2"},
{"key3", "value3"},
{"key4", "value4"},
{"key5", "value5"},
};
// keyとvalueの取得
foreach (KeyValuePair<string, string> item in mymap) {
System.Console.WriteLine("key:{0}, value:{1}", item.Key, item.Value);
}
// keyの取得
foreach (var a in mymap.Keys) {
System.Console.WriteLine("key:{0}", a);
}
// valueの取得
foreach (var a in mymap.Values) {
System.Console.WriteLine("value:{0}", a);
}
}
}
|
実行結果は以下のようになります。keyとvalue、keyのみ、valueのみの参照ができます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
key:key1, value:value1
key:key2, value:value2
key:key3, value:value3
key:key4, value:value4
key:key5, value:value5
key:key1
key:key2
key:key3
key:key4
key:key5
value:value1
value:value2
value:value3
value:value4
value:value5
|
このようにC#でDictionaryの繰り返し処理をするには、foreachを使用します。
インデックスの取得
C#でDictionaryをforeachで繰り返し処理する際に、indexも取得する方法を紹介します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
using System.Collections.Generic;
using System.Linq;
public class Hello{
public static void Main(){
// 初期化
var mymap = new Dictionary<string, string>(){
{"key1", "value1"},
{"key2", "value2"},
{"key3", "value3"},
{"key4", "value4"},
{"key5", "value5"},
};
// index,key,valueの取得
foreach (var item in mymap.Select((Entry, Index) => new { Entry, Index })){
System.Console.WriteLine("index: {0}, key:{1}, value:{2}", item.Index, item.Entry.Key, item.Entry.Value);
}
}
}
|
実行結果は以下のようになります。
1
2
3
4
5
|
index: 0, key:key1, value:value1
index: 1, key:key2, value:value2
index: 2, key:key3, value:value3
index: 3, key:key4, value:value4
index: 4, key:key5, value:value5
|
このようにC#では、Dictionaryの繰り返し処理でindexを取得できます。
繰り返し処理で削除
C#にて、Dictionaryをforeachで繰り返し処理中に要素を削除するとどうなるでしょうか。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
using System.Collections.Generic;
public class Hello{
public static void Main(){
// 初期化
var mymap = new Dictionary<string, string>(){
{"key1", "value1"},
{"key2", "value2"},
{"key3", "value3"},
{"key4", "value4"},
{"key5", "value5"},
};
// keyとvalueの取得
foreach (KeyValuePair<string, string> item in mymap) {
if(item.Key == "key3"){
mymap.Remove(item.Key); // System.InvalidOperationExceptionが発生する
}
}
}
}
|
上記を実行すると、System.InvalidOperationExceptionが発生します。コレクションの繰り返し処理中に削除などの操作はできません。
これを解決するには、DictionaryのkeyをListに変換して、Listをforeachで繰り返し処理してDictionaryの要素を削除します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
using System.Collections.Generic;
using System.Linq;
public class Hello{
public static void Main(){
// 初期化
var mymap = new Dictionary<string, string>(){
{"key1", "value1"},
{"key2", "value2"},
{"key3", "value3"},
{"key4", "value4"},
{"key5", "value5"},
};
List<string> keyList = mymap.Keys.ToList();
// key3の要素削除
foreach (string key in keyList) {
if(key == "key3"){
mymap.Remove(key);
}
}
// keyとvalueの取得
foreach (KeyValuePair<string, string> item in mymap) {
System.Console.WriteLine("key:{0}, value:{1}", item.Key, item.Value);
}
}
}
|
実行結果は以下のようになります。
1
2
3
4
|
key:key1, value:value1
key:key2, value:value2
key:key4, value:value4
key:key5, value:value5
|
繰り返し処理で変更
C#において、Dictionaryをforeachで変更する方法を紹介します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
using System.Collections.Generic;
using System.Linq;
public class Hello{
public static void Main(){
// 初期化
var mymap = new Dictionary<string, string>(){
{"key1", "value1"},
{"key2", "value2"},
{"key3", "value3"},
{"key4", "value4"},
{"key5", "value5"},
};
List<string> keyList = mymap.Keys.ToList();
// valueを繰り返すように変更
foreach (string key in keyList) {
mymap[key] = mymap[key] + mymap[key];
}
// keyとvalueの取得
foreach (KeyValuePair<string, string> item in mymap) {
System.Console.WriteLine("key:{0}, value:{1}", item.Key, item.Value);
}
}
}
|
実行結果は以下のようになります。
1
2
3
4
5
|
key:key1, value:value1value1
key:key2, value:value2value2
key:key3, value:value3value3
key:key4, value:value4value4
key:key5, value:value5value5
|
まとめ
いかがでしたでしょうか。C#でDictionaryをforeachで繰り返し処理する方法について説明しました。foreachを使って、keyとvalue、keyのみ、valueのみなど、様々な繰り返し処理ができます。また、繰り返し処理でindexも取得できます。
ぜひご自身でC#のソースコードを書いて、理解を深めてください。
Search キーワード検索
Popular 人気の記事
-
【VB.NET入門】DataGridViewの使い方まとめ
公開: 更新:
reccomended おすすめ記事
-
【.NETが統合】.NET 5の概要と今後のリリース予定
公開: 更新:
Categories 連載一覧
Tags タグ一覧
Jobs 新着案件
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅) -
債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅)