|
分類:[C#]
多重ループの抜け方について教えてください。
C# VS2022
while文、for文とswitch文で複数のループがあるときに、
値を取得した時点ですべてのループを抜ける方法がわかりません。
1. 値を取得するまでのループ(ループ1)
2.リスト1をループして値を検索(ループ2)
3.リスト1の条件に該当したとき、リスト2をループして値を検索(ループ3)
4. リスト2の条件に該当したとき、値(「20」)を取得
5.値を取得した時点ですべてのループ(ループ1)を抜けて検索を終了
switch文で該当する値が取得できたときに、
while文を終了させるため「true」を設定してますが、ループ1を抜けることができません。
値を取得した時点ですべてのループを抜けるにはどのようにすればよいですか。
よろしくお願いいたします。
public string Kiroku_LatestData()
{
string latestData = "";
// KrkDataクラスのリストの宣言と初期化
List<KrkData> KLst1 = new List<KrkData> {
new KrkData { Data1 = "1"},
new KrkData { Data1 = "2"},
new KrkData { Data1 = "3"},
new KrkData { Data1 = "1"},
};
// KrkDataクラスのリストの宣言と初期化
List<KrkData> KLst2 = new List<KrkData> {
new KrkData { Data1 = "10"},
new KrkData { Data1 = "20"},
new KrkData { Data1 = "30"},
new KrkData { Data1 = "10"},
};
// KLst1にデータがない場合
if (KLst1 == null || KLst1.Count == 0) return latestData;
// ループ1
// わからない事:KLst2に該当した時点でループを抜けたい
while (true)
{
bool quit = false;
// ループ2 KLst1
for (int i = 0; i < KLst1.Count; i++)
{
//
if (KLst1[i].Data1 == "2")
{
if (KLst2 != null && KLst2.Count > 0)
{
// ループ3 KLst2
for (int j = 0; j < KLst2.Count; j++)
{
switch (KLst2[j].Data1)
{
case "20":
latestData = KLst2[j].Data1;
quit = true;
break;
default:
break;
}
}
}
}
}
quit = true;
if (quit)
{
break;
}
}
if (latestData != "")
{
latestData = "最新:" + latestData;
}
return latestData;
}
|