גוף הלולאה יכול להיות מורכב מפקודה/מתודה אחת או יותר.
בין השאר, גוף הלולאה יכול להכיל לולאות נוספות.
לולאה מקוננת היא לולאה שבגוף הלולאה שלה מוגדרת לולאה נוספת.
לדוגמה (NestedLoop01):
1 : classProgram
2 : {
3 : staticvoidMain(string[]args)
4 : {
5 : for(inty=1;y<=10;y++)
6 : {
7 : for(intx=1;x<=10;x++)
8 : {
9 : Console.Write("{0,4}",x*y);
10 : }
11 : Console.WriteLine();
12 : }
13 : }
14 : }
בדוגמת הקוד כתובות שתי לולאות, לולאת חיצונית (נכנה אותה Y) בשורה 5 ובתוכה מוגדרת לולאה פנימית (נכנה אותה לולאה X) - בשורה 7. בכל איטראציה של הלולאה החיצונית Y, מתבצעות כל האיטראציות של הלולאה הפנימית X, בדוגמה השימוש בלולאה מקוננת יצר את לוח הכפל. הערה - יש להקפיד שהמשתנה המוגדר במקטע האתחול של הלולאה החיצונית שונה מהמשתנה המוגדר בלולאה המקוננת. פלט:
במקרים רבים קיים קשר הדוק יותר בין המשתנה המשמש את הלולאה החיצונית עם זה של הלולאה הפנימית.
בדוגמה הבאה, מספר האיטראציות של הלולאה הפנימית משתנה ותלוי במספר האיטראציה של הלולאה החיצונית. לדוגמה (NestedLoop02):
1 : classProgram
2 : {
3 : staticvoidMain(string[]args)
4 : {
5 : for(inty=1;y<=10;y++)
6 : {
7 : for(intx=1;x<=y;x++)
8 : {
9 : Console.Write("*");
10 : }
11 : Console.WriteLine();
12 : }
13 : }
14 : }
מספר האיטראציות של הלולאה הפנימית X(שורה 7) תלוי בערכו של Y, בכל כניסה מחודשת ללולאה המקוננת X ערכו של Y גדול ב-1 מהביצוע הקודם שלה. פלט: