C#の繰り返し構文であるfor文の使い方を紹介します!|連想配列について知ろう
- システム
エンジニア - C#でのDictionaryクラスの使い方について教えてください。
- プロジェクト
マネージャー - それでは、C#でのDictionaryクラスの使用方法をご紹介いたしましょう。
C#の繰り返し構文 – forの使い方とは?
今回は、C#の繰り返し構文であるfor文の使い方について説明します。
for文を使用することで、条件式がtrueの間、繰り返し処理ができます。
配列やListに対しても同様にfor文を使用できます。
C#でのfor文の使い方に興味のある方はぜひご覧ください。
C#でのfor文の使い方について紹介します。
for文は以下のように記述します。条件式がtrueの間、繰り返し処理ができます。
1
2
3
4
5
|
for (初期化; 条件式; イテレータ) {
// 繰り返し処理
}
|
それでは、実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
|
public class Sample {
public static void Main() {
for (int i = 0; i < 5; i++) {
System.Console.WriteLine(i);
}
}
}
|
実行結果は以下のようになります。
1
2
3
4
5
|
0
1
2
3
4
|
0から4までインクリメントしながら繰り返し処理が行えていることが分かります。
もちろん、デクリメントすることもできます。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
|
public class Sample {
public static void Main() {
for (int i = 4; i >= 0; i--) {
System.Console.WriteLine(i);
}
}
}
|
実行結果は以下のようになります。
1
2
3
4
5
|
4
3
2
1
0
|
イテレータはインクリメントやデクリメントだけでなく、2増やしたり3減らしたり自由に制御できます。
また、以下のように記述すると無限ループになります。
1
2
3
4
5
|
for ( ; ; ) {
// 繰り返し処理
}
|
配列
C#では、配列の全要素取得のためにfor文を使用できます。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public class Sample {
public static void Main() {
// 配列の生成
string[] array = new string[3] { "item1", "item2", "item3" };
// 配列の全要素出力
for(int i = 0; i < array.Length; i++) {
System.Console.WriteLine("index[{0}]:{1}", i, array[i]);
}
}
}
|
実行結果は以下のようになります。
1
2
3
|
index[0]:item1
index[1]:item2
index[2]:item3
|
“array.Length”で配列の要素数が取得できます。
0~”array.Length”までのインデックスでインクリメントしながらアクセスすることで、配列の全要素を取得できます。
このように、C#では配列の全要素取得のためにfor文を使用できます。
List
C#では、Listの全要素取得のためにfor文を使用できます。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
using System.Collections.Generic;
public class Sample {
public static void Main() {
// Listの生成
List<string> item_list = new List<string>();
item_list.Add("item1");
item_list.Add("item2");
item_list.Add("item3");
// Listの全要素出力
for(int i = 0; i < item_list.Count; i++) {
System.Console.WriteLine("index[{0}]:{1}", i, item_list[i]);
}
}
}
|
実行結果は以下のようになります。
1
2
3
|
index[0]:item1
index[1]:item2
index[2]:item3
|
“item_list.Count”でListの要素数が取得できます。
0~”item_list.Count”までのインデックスでインクリメントしながらアクセスすることで、Listの全要素を取得できます。
このように、C#ではListの全要素取得のためにfor文を使用できます。
連想配列
C#では、Dictionaryクラスでもデータ集合を扱えます。
連想配列とも言い、以下のように記述します。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
using System.Collections.Generic;
public class Sample {
public static void Main() {
//Dictionaryクラスの生成
Dictionary<string, int> dict = new Dictionary<string, int>();
dict.Add("item1", 100);
dict.Add("item2", 200);
dict.Add("item3", 300);
}
}
|
Dictionaryクラスは、自分でKey(要素名)を定義するため、順序が保障されているわけではありません。そのため、for文で要素にアクセスできず、代わりにforeach文を使用します。
ToListメソッドを使うと、連想配列からListを作成できます。
Listにすればfor文で各要素にアクセスできます。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
using System.Collections.Generic;
using System.Linq;
public class Sample {
public static void Main() {
//Dictionaryクラスの生成
Dictionary<string, int> dict = new Dictionary<string, int>();
dict.Add("item1", 100);
dict.Add("item2", 200);
dict.Add("item3", 300);
// ToListメソッドでListにする
var keys = dict.Keys.ToList();
var vals = dict.Values.ToList();
// Listの全要素出力
for(int i = 0; i < keys.Count; i++) {
System.Console.WriteLine("key[{0}], val[{1}]", keys[i], vals[i]);
}
}
}
|
実行結果は以下のようになります。
1
2
3
|
key[item1], val[100]
key[item2], val[200]
key[item3], val[300]
|
また、CopyToメソッドを使用すると、連想配列から配列を作成できます。
配列にすればfor文で各要素にアクセスできます。
実際のソースコードを見てみましょう。
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
|
using System.Collections.Generic;
public class Sample {
public static void Main() {
//Dictionaryクラスの生成
Dictionary<string, int> dict = new Dictionary<string, int>();
dict.Add("item1", 100);
dict.Add("item2", 200);
dict.Add("item3", 300);
string[] keys = new string[dict.Count];
int[] vals = new int[dict.Count];
// CopyToメソッドで配列にする
dict.Keys.CopyTo(keys, 0);
dict.Values.CopyTo(vals, 0);
// 配列の全要素出力
for(int i = 0; i < keys.Length; i++) {
System.Console.WriteLine("key[{0}], val[{1}]", keys[i], vals[i]);
}
}
}
|
実行結果は以下のようになります。
1
2
3
|
key[item1], val[100]
key[item2], val[200]
key[item3], val[300]
|
このように、C#では連想配列に対してfor文は使用できません。
ToListメソッドでListにしたり、CopyToメソッドで配列にしたりすることで、for文で各要素にアクセスできます。
- システム
エンジニア - for文は繰り返し処理ができる以外に処理配列やListでも使えるのですね。
- プロジェクト
マネージャー - その通りです。ソースコードを参考にご自身で模ソースコードを書いてみてください。
C#でのforの使い方を正しく理解しよう
いかがでしたでしょうか。
C#の繰り返し構文であるfor文の使い方について説明しました。
for文を使用することで、条件式がtrueの間、繰り返し処理ができます。
配列やListに対してもfor文を使用できます。
ぜひご自身でソースコードを書いて、理解を深めてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
C#新着案件New Job
-
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(新宿駅) -
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(新宿駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円神奈川県横浜市(桜木町駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円神奈川県横浜市(桜木町駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(西新宿駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(西新宿駅)