به عنوان نمونههایی از انواع حلقه ها در سی شارپ میتوانیم به «For» و «While» و «Do -While» و «Foreach» اشاره کنیم. بعضی وقتها لازم است که بلوک خاصی از کدها را چندین بار مختلف اجرا کنیم. در حالت عادی، عبارتهای نوشته شده به ترتیب و از بالابهپایین اجرا میشوند. زبانهای برنامه نویسی برای تغییر دادن این ترتیب، ساختارهای کنترلی به نام حلقه، فراهم کردهاند. با استفاده از حلقه میتوان مسیرهای پیچیدهتری برای اجرای کد طراحی کرد. تمام برنامه نویسها باید درک خوبی نسبت به حلقهها داشته باشند. حلقهها به توسعهدهندگان کمک میکنند تا رفتار مشخصی را چندین بار به صورت متوالی اجرا کنند. در نتیجه برنامههای نوشته شده کارآمدی و قدرت بسیار بیشتری پیدا میکنند. حلقه ها در سی شارپ ابزار بسیار مهمی برای کنترل جریان اجرای برنامه هستند.

در این مطلب از مجله فرادرس، به بررسی انواع مختلف حلقه ها در سی شارپ میپردازیم. سینتکس هر حلقه و روش پیادهسازی آن را همراه با مثالهای کدنویسی شده نشان میدهیم. بعد از معرفی انواع حلقه ها در سی شارپ، عبارتهای کنترل حلقه را با کمک مثالهای مختلف معرفی خواهیم کرد. در آخر مطلب هم به حلقهی بینهایت و نحوهی تعریف آن میپردازیم. همچنین حلقههای تو در تو را نیز بررسی میکنیم.
حلقه ها در سی شارپ
استفاده از حلقهها در برنامه نویسی بسیار مهم است. زیرا این ساختارها به اجرای وظایف خاصی به صورت تکراری کمک میکنند. با کمک حلقهها دیگر برنامه نویسان مجبور نیستند که کدهای خاصی را چندین و چندبار به صورت تکراری بنویسند. برای خودکارسازی روند انجام بسیاری از کارها میتوانیم از حلقهها استفاده کنیم. این مسئله نه تنها باعث صرفهجویی در زمان میشود بلکه کدهای نوشته شده را کوتاهتر و قابلیت نگهداری آنها را نیز افزایش میدهد. حلقهها در انجام کارهایی مانند پیمایش بر روی مجموعه دادهها، پردازش حجم زیادی از داده و پیادهسازی الگوریتمهای پیچیده نیز به برنامه نویسان کمک میکنند. برای تبدیل شدن به برنامه نویس حرفهای سی شارپ لازم است که در کار با حلقهها حرفهای شویم.
انواع حلقه ها در سی شارپ
به طور کل میتوان انواع حلقههای سی شارپ را به چند دسته زیر تقسیم کرد.
- حلقه For: این حلقه، مجموعهای از دستورات را به تعداد مشخصی اجرا میکند. استفاده از این حلقه باعث کوتاهتر شدن کدهای مربوط به متغیر حلقه میشود.
- حلقه While: این حلقه، عبارت خاص یا گروهی از عبارتها را تا زمانی اجرا میکند که شرط مشخص شده برقرار باشد. در هر چرخه، ابتدا شرط مشخص شده را بررسی میکند. سپس در صورت «True» بودن پاسخ شرط، دستورات درون عبارت، اجرا میشوند.
- حلقه Do While: این حلقه هم مانند حلقه While است. با این تفاوت که شرط مشخص شده را هربار بعد از به پایان رسیدن دستورات درون بلوک حلقه، بررسی میکند.
- حلقه Foreach: از حلقه Foreach برای دسترسی به عناصر موجود در مجموعههایی مانند آرایهها و لیستها استفاده میشود. در این نوع حلقه، نیازی به استفاده از اندیس هر عنصر نیست.

البته انواع حلقه ها در سی شارپ شامل موارد دیگری مانند حلقههای تو در تو و حلقههای بینهایت هم هستند. این حلقهها از ترکیب حلقههای فهرست بالا ساخته میشوند. به همین دلیل در فهرست معرفی نشدهاند. هر چند در ادامه مطلب تمام آنها را توضیح دادهایم.

مثال سادهای درباره کار با حلقه
در مثال زیر، ابتدا آرایهای را تعریف کردیم. سپس برای نمایش اعضای درون این آرایه از حلقه استفاده کردهایم.
بعد از اجرای کدهای بالا خروجی زیر تولید شده و در کنسول سی شارپ نمایش داده میشود.
1 2 3 5 6
در ادامه مطلب، تمام حلقهها نام برده شده در بالا را یک به یک بررسی کردهایم.
حلقه While در سی شارپ
از حلقه «While» برای تکرار دستور یا مجموعهای از دستورات استفاده میشود. این حلقه زمانی به کار برده میشود که تعداد تکرار دستور مورد نظر از قبل مشخص نیست. در این ساختار، شرطی برای حلقه تعریف میشود. تا زمانی که این شرط برقرار باشد، دستورات درون بلوک While به صورت تکراری اجرا میشوند.
حلقه While همیشه اول شرط مشخص شده را بررسی میکند. در صورت True بودن پاسخ این شرط، دستورات درون بلوک خود را اجرا میکند. برای کاهش خطاهای سینتکسی هنگام نوشتن کد و درک بهتر نکات مبهم، یکی از روشهای مدرن، استفاده از دستیارهای هوش مصنوعی است. برای مسلط شدن بر این مسئله میتوانید فیلم آموزش کاربرد ChatGPT در برنامه نویسی سی شارپ «C#» از کدنویسی تا دیباگینگ را از فرادرس مشاهده کنید. لینک مربوط به این فیلم را در پایین نیز قرار دادهایم.
در کدهای پایین مثالی را درباره استفاده از حلقه while پیادهسازی کردهایم.
بعد از اجرای کدهای بالا خروجی زیر در کنسول سی شارپ نمایش داده میشود.
Number: 1 Number: 2 Number: 3 Number: 4 Number: 5
استفاده از فیلم های پروژه محور برای یادگیری بهتر سی شارپ
روشهای مختلفی برای یادگیری تکنولوژیهای کامپیوتری بخصوص برنامه نویسی وجود دارند. از منابع متنی و مطالعاتی گرفته تا کلاسهای حضوری، آنلاین و تماشای فیلمهای آموزشی. اما در این میان استفاده از فیلمهای آموزشی نسبت به سایر روشها از برتری قابل توجهی برخوردار است. زیرا به صورت همزمان حافظههای دیداری و شنیداری دانشجو را تحریک میکند. علاوهبر آن در این روش امکان مشاهده چندباره فیلمهای آموزشی و بخشهای مختلف نیز وجود دارد. در ضمن نسبت به کلاسهای حضوری هزینه مقرون به صرفهتری هم دارند. به همین دلیل فرادرس مجموعه کاملی از فیلمهای آموزشی را برای سی شارپ تهیه کرده است.

همینطور که میدانیم C# در حوزههای مختلف کاربرد دارد. این زبان بخاطر سادگی، امنیت و انعطافپذیری بالا به خوبی در سیستمها و فناوریهای مختلف ادغام میشود. برای همین توانایی کار با آن برای برنامه نویسان مانند امتیازی برجسته است. بهترین روش یادگیری هر ابزاری، استفاده از آن بر روی پروژههای مربوط به دنیای واقعی است. به همین دلیل، فرادرس درباره زبان سی شارپ، مجموعه آموزشی را فراهم کرده است که تمام فیلمهای آن به صورت پروژه محور تولید شدهاند.
در بالا چند مورد از فیلمهای آموزش پروژهمحور سی شارپ را معرفی کردهایم.
حلقه For در سی شارپ
از حلقه «For» برای اجرای توالی از دستورات به صورت تکراری استفاده میشود. در این حلقه، متغیر شمارنده در یک خط کد، مدیریت میشود. بنابراین استفاده از for باعث کوتاهتر شدن کدها نیز میشود.
در کادر پایین، مثالی را برای بررسی روش کار حلقه for پیادهسازی کردهایم.
بعد از اینکه کدهای بالا کامپایل و اجرا شدند، نتایج زیر تولید میشود.
Number: 1 Number: 2 Number: 3 Number: 4 Number: 5
حلقه Do While در سی شارپ
حلقه «Do While» شبیه به حلقه while است. به غیر از آن که در این حلقه، شرط اجرای آن پس از انجام دستورات داخل حلقه بررسی میشود.
با دقت بر روی مثال زیر، به سادگی میتوانید روش کار حلقه do while را درک کنید.
بعد از اینکه کدهای بالا کامپایل و اجرا شدند، نتایج زیر در کنسول سی شارپ نمایش داده میشوند.
Number: 1 Number: 2 Number: 3 Number: 4 Number: 5
حلقه Foreach در سی شارپ
حلقه «Foreach» یکی از انواع حلقه ها در سی شارپ است. این حلقه ویژگی خاصی دارد. حلقه Foreach برای پیمایش بر روی مجموعه دادههایی مانند لیستها یا آرایهها در سی شارپ یا حتی سایر ساختارهای قابل شمارش به کار برده میشود. کار با این حلقه، استفاده از عناصر درون مجموعهها را سادهتر میکند. با کمک حلقه foreach در سی شارپ دیگر نیازی به شمارش اعضا یا اندیسهای عناصر نداریم.

از این حلقه زمانی استفاده میکنیم که بخواهیم عملیات خاصی را بر روی تمام اعضای درون ساختارهای پیمایشپذیر انجام بدهیم. بدون اینکه نیاز باشد از اندیس این عناصر در محاسبات خود استفاده کنیم.
اجرای کد بالا باعث تولید خروجی زیر میشود.
M o s t a f a
سینتکس حلقه Foreach
در کادر پایین سینتکس حلقه foreach را نمایش دادهایم.
در سینتکس بالا سه پارامتر اصلی وجود دارند. این پارامترها را در فهرست زیر، توضیح دادهایم.
- data_type: این پارامتر، نوع عناصر موجود در مجموعه داده را مشخص میکند. برای مثال میتوان از انواع داده int و string و غیره نام برد.
- variable_name: متغیر موقتی است که در هر بار پیمایش، عنصر فعلی را نگه میدارد.
- collection: آرایه یا مجموعه دادهای که بر روی آن پیمایش میکنیم.
حلقه foreach برای پیمایش بر روی عناصر مجموعه داده مورد نظر از کلمه کلیدی in استفاده میکند. در هر مرحله از پیمایش، یک عنصر – به ترتیب از اول مجموعه – انتخاب شده و در متغیر ذخیره میشود. حلقه تا زمانی اجرا میشود که تمام عناصر موجود در مجموعه داده پردازش شوند.
در زمان استفاده از حلقه foreach باید به نکات مهم زیر، توجه کنیم.
- باید عبارتهای داخل حلقه foreach را در آکولادهای باز و بسته {} محصور کنیم.
- در حلقهی foreach نیازی به تعریف متغیر شمارنده نیست. در عوض، باید متغیری تعریف کنیم که نوع آن با نوع دادهی عناصر آرایه یکسان باشد. سپس نام آرایه بعد از کلمهی کلیدی in نوشته میشود.
- داخل بلوک حلقه میتوانیم از متغیر ساخته شده خودمان استفاده کنیم. دیگر نیازی به استفاده از آرایه و شماره اندیس آن نداریم.
در مثال زیر، از حلقه foreach برای پیمایش بر روی مجموعهای از کاراکترها استفاده کردهایم.
اجرای کدهای بالا باعث تولید خروجیهای زیر میشود.
Number of males: 3 Number of females: 2
در مثال زیر با استفاده از حلقه foreach بر روی انواع ساختارهای ذخیره داده پیمایش کردهایم. این ساختارها شامل لیست، آرایه و دیکشنری در سی شارپ هستند.
اجرای کدهای بالا باعث تولید خروجیهای زیر میشود.
Fruits: Apple Banana Orange Numbers: 10 20 30 Ages: A: 30 B: 25 C: 35
محدودیت ها و مزایای حلقه Foreach
حلقه foreach هم مانند سایر انواع حلقه ها در سی شارپ دارای محدودیتها و مزایای مخصوص به خود است. در این بخش از مطلب ابتدا محدودیتهای کاربردی حلقه foreach را نام بردهایم.
- دسترسی بدون اندیس: برعکس حلقه for معمولی، در حلقه foreach متغیری برای نگهداری اندیس عناصر، وجود ندارد. در نتیجه نمیتوانیم به بخش خاصی از دادهها یا موقعیت خاصی در مجموعه داده مورد نظر اشاره کنیم.
- بدون امکان کار بر روی مجموعه داده: در زمان پیمایش دادهها با استفاده از حلقه foreach نمیتوانیم عنصری را از مجموعه داده مورد نظر حذف کرده یا به آن اضافه کنیم.
- فقط پیمایش یک جهته: حلقه foreach فقط از عنصر اول شروع کرده و به سمت انتهای مجموعه داده پیمایش میکند. در هر پیمایش هم فقط یک قدم برمیدارد.
- «سربار عملکرد» (Performance Overhead): حلقه foreach ممکن است که نسبت به حلقههای معمولی کندتر عمل کند. این مسئله به طور خاص در زمان کار با حجم انبوهی از دادهها مشاهده میشود.

اما استفاده از حلقه foreach مزیتهای زیادی هم دارد. در فهرست زیر، مهمترین مزیتهای بهکارگیری حلقه foreach را نوشتهایم.
- حلقه foreach روش بسیار ساده و سرراستی برای کار با عناصر درون مجموعههای مختلف فراهم کرده است. دیگر نیازی به دسترسی به اندیس این عناصر نداریم.
- استفاده از این حلقه خوانایی کدها را هم بیشتر میکند. زیرا دیگر بخشهای پیچیده حلقههای معمولی در کدها وجود ندارند.
- این حلقه از روبهرو شدن توسعهدهندگان با خطاهای «Off-By-One» جلوگیری میکند. احتمال رویدادن این خطاها در حلقهها معمولی بیشتر است.
- حلقه foreach به صورت درونی به مدیریت اندیسها میپردازد. در نتیجه پیمایش بر روی دادهها سادهتر میشود.
- استفاده از این حلقه کدها را تمیزتر میکند. بنابراین تعمیر و نگهداری کدها به روش سادهتری انجام میشود.
نکته: در زمان استفاده از حلقه foreach اگر تغییری در مجموعه داده ایجاد شود، برنامه با خطای زمان اجرا مواجه خواهد شد.

تفاوت های بین حلقه For و Foreach
در میان انواع حلقه ها در سی شارپ، حلقههای for و foreach شباهتهایی دارند. اما با این حال، تفاوتهای مهمی هم بین آنها وجود دارد. در این بخش از مطلب، مهمترین تفاوتهای حلقههای for و foreach را بررسی کردهایم.
- تعریف: در حلقه for، کد نوشته شده در بدنه حلقه به تعداد مشخص شده در عبارت شرطی آن اجرا میشود. اما حلقه foreach بر روی تمام عناصر مجموعه داده مشخص شده پیمایش میکند. دستورات نوشته شده در بدنه حلقه بر روی هر عنصر یک بار اجرا میشوند.
- پیمایش: حلقه for را میتواند در هر دو جهت، به سمت جلو و عقب پیمایش کرد. اما حلقه foreach را فقط میتوان از اول به آخر، به سمت جلو، پیمایش کرد.
- کارآمدی: حلقه for میتواند کارایی بیشتری داشته باشد. زیرا این حلقه نسخه کپی شدهای از روی آرایه ایجاد نمیکند. اما حلقه foreach برای استفاده در مجموعه دادههای بزرگ کارآمدی کمتری دارد. زیرا باید از تمام دادهها یکبار کپی تهیه کند. این کار زمانبر است.
- کاربرد: حلقه for بهترین گزینه برای استفاده در سناریوهایی است که نیاز به اندیسگذاری سفارشی، پیمایش به عقب یا «بهینهسازی در عملکرد» (Performance Optimization) دارند. حلقه foreach هم مناسب پیمایش بر روی عناصر درون مجموعه دادههای مختلف است.
برای کسب مهارت بیشتر در کدنویسی با سی شارپ و بخصوص کار با حلقهها میتوانید انواع پروژههای سی شارپ را برای تمرین حل کرده یا راه حلهای ارائه شده آنها را بررسی کنید. به این منظور پیشنهاد میکنیم که مطلب مربوط به پروژههای سی شارپ برای تمرین در مجله فرادرس را مطالعه کنید.
در بخش بعدی مطلب، عبارتهای کنترل حلقه را بررسی کردهایم.
عبارت های کنترل حلقه
عبارتهای کنترل حلقه، ترتیب عادی اجرای کدها را تغییر میدهند. بعد از آن که اجرای کدها موجود در بلوک یا تکه کد خاصی به پایان میرسد – با توسط عبارتهای کنترل حلقه متوقف شود – تمام متغیرها و اشیا ساخته شده در آن بلوک به شکل خودکار نابود میشوند.
در زبان برنامه نویسی سی شارپ، دو عبارت کنترلی زیر، تعریف شدهاند.
- عبارت break: این دستور اگر در بلوکهای حلقه یا switch استفاده شود، فعالیت این بلوکها را به شکل کامل متوقف کرده و از آن خارج میشود. سپس اجرای کدها از خط بعد از حلقه یا switch ادامه پیدا میکند.
- عبارت continue: در صورتی که از این عبارت در حلقه استفاده شود، بقیه دستورات درون حلقه – در آن دور خاص – نادیده گرفته شده و کار حلقه دوباره از اول شروع میشود. ابتدا شرط حلقه بررسی میشود. اگر شرط برقرار باشد، دور بعدی دستورات حلقه اجرا میشود.

عبارت Break
دو دلیل عمده برای استفاده از عبارت break در سی شارپ وجود دارد. در فهرست زیر این دلایل را نوشتهایم.
- استفاده برای کنترل جریان حلقه: وقتی درون حلقهای با عبارت break روبهرو میشویم. بلافاصله انجام کار حلقه متوقف میشود. بعد از آن اجرا برنامه از خط کد بعد از حلقه ادامه پیدا میکند.
- استفاده برای کنترل ساختار switch: از عبارت break برای متوقف کردن جریان کار عبارت switch هم استفاده میشود.
اگر از عبارت break درون حلقههای تودرتو استفاده کنیم، اجرای حلقهای متوقف میشود که عبارت break در آن نوشته شده است. یعنی اینکه اگر این عبارت درون حلقه داخلی نوشته شده باشد، اجرای آن حلقه متوقف شده و اجرای برنامه از خط کد بعد از آن در حلقه بیرونی، ادامه پیدا میکند. در بخش انتهایی مطلب، حلقه تو در تو را معرفی کردهایم.
برای استفاده از break فقط باید کلمه کلیدی آن را در یک خط کد مجزا بنویسیم.
استفاده از عبارت Break با حلقه While
در مثال زیر، با کمک عبارت break حلقه while را به پایان میرسانیم. این کار وقتی اتفاق میافتد که شمارنده حلقه به عدد 15 برسد.
بعد از کامپایل شدن و اجرای کدهای بالا، نتایج زیر در کنسول سی شارپ نمایش داده میشوند.
value of a: 10 value of a: 11 value of a: 12 value of a: 13 value of a: 14 value of a: 15
استفاده از عبارت Break در حلقه For
در این مثال، هر وقت اولین عدد زوج پیدا شد، حلقه for متوقف میشود. سپس عدد زوج پیدا شده در خروجی نمایش داده میشود.
بعد از کامپایل و اجرای کدهای بالا، نتایج زیر در کنسول سیشارپ نمایش داده میشوند.
Checking number: 1 First even number found: 2 Loop terminated after finding the first even number.
عبارت Continue
عبارت «Continue» هم در سی شارپ مانند عبارت break کار میکند. با این تفاوت که عبارت break انجام حلقه را به شکل کامل به پایان میرساند. ولی عبارت continue فقط اجرای بقیه کدهای درون حلقه را رها کرده و دور فعلی حلقه را به پایان میرساند. سپس دور بعد حلقه – در صورت برقرار بودن شرط – شروع میشود.
در فهرست زیر، مراحل انجام کار حلقه for را در زمان روبهرو شدن با عبارت continue نوشتهایم.
- وجود عبارت continue در حلقه for باعث میشود که انجام ادامه دستورات درون بلوک حلقه متوقف شود.
- سپس برنامه، شرط ادامه حلقه را بررسی میکند.
- در صورت برقرار بودن شرط، بخش بهروزرسانی شمارنده حلقه را اجرا میکند.
- بعد از آن هم دوباره وارد حلقه میشود.
در فهرست زیر هم مراحل انجام کار حلقههای while و do while را در زمان روبهرو شدن با عبارت continue نوشتهایم.
- وقتی برنامه در حلقه while یا do while ، با عبارت continue روبهرو شود، بقیه کدهای درون بلوک حلقه نادیده گرفته میشوند.
- سپس اول شرط پیمایش حلقه بررسی میشود.
- اگر شرط هنوز برقرار بود دوباره برنامه وارد حلقه میشود.

برای استفاده از عبارت continue فقط باید کلمه کلیدی آن را همراه با علامت ; در یک خط کد مجزا بنویسیم.
استفاده از عبارت Continue در حلقه Do While
در کدهای زیر، بعد از اینکه مقدار a برابر با 15 شود، ادامه پیمایش حلقه متوقف میشود. یعنی دستور مربوط به چاپ مقدار شمارنده برای عدد 15 اجرا نمیشود. برای انجام این کار از دستور continue; استفاده کردهایم.
بعد از اینکه کدهای بالا کامپایل و اجرا شدند، نتایج زیر در کنسول سی شارپ نمایش داده میشوند.
value of a: 10 value of a: 11 value of a: 12 value of a: 13 value of a: 14 value of a: 16 value of a: 17 value of a: 18 value of a: 19
استفاده از عبارت Continue در حلقه For
در کدهای زیر با استفاده از عبارت continue ادامه پیمایش حلقه for را متوقف کردهایم. سپس از اول پیمایش حلقه در دور بعدی شروع شده است.
بعد از اینکه کدهای بالا کامپایل و اجرا شدند، نتایج زیر در کنسول سی شارپ نمایش داده میشوند.
Odd number: 1 Odd number: 3 Odd number: 5 Odd number: 7 Odd number: 9 Loop completed.
یاد گرفتن زبان برنامه نویسی سی شارپ با کمک فرادرس
فرادرس برای آموزش زبان برنامه نویسی سی شارپ، محتواهای متنی و فیلمهای آموزشی متنوعی تولید و منتشر کرده است. زیرا زبان #C یکی از زبانهای مشهور و پُرکاربرد در حوزههای تجارت و صنعت است.همچنین، افراد زیادی تمایل به یادگیری این زبان برنامه نویسی دارند. هدف فرادرس، این است که هم دانشجویان و محصلان بتوانند از فیلمهای آموزشی آن به عنوان منابع کمک درسی استفاده کنند و هم افراد شاغل یا جویای کار بتوانند مهارتهای عملی خود را ارتقا دهند.
در بالا، چند مورد از فیلمهای آموزشی این مجموعه را معرفی کردهایم. در صورت تمایل بر روی تصویر پایین کلیک کرده و باقی فیلمهای این مجموعه را نیز بررسی کنید.

در ادامه مطلب، حلقه بینهایت و حلقههای تو در تو در سی شارپ را نیز بررسی کردهایم.
حلقه بی نهایت در سی شارپ
اگر برای حلقهای شرطی مشخص کنیم که همیشه برقرار باشد، آن حلقه به حلقه بینهایت تبدیل میشود. یعنی اینکه بدون توقف و برای همیشه به اجرای خود ادامه میدهد. به شکل سنتی برای پیادهسازی حلقه بینهایت از for استفاده میشود. از آنجا که وجود هیچ کدام از بخشهای سهگانه حلقه for - شروع، شرط و بهروزرسانی شمارنده – الزامی نیست، به سادگی میتوان حلقه بینهایت ایجاد کرد. برای انجام این کار فقط کافیست که بخش شرط را در این حلقه خالی بگذاریم.
در مثال زیر، روش تعریف و استفاده از حلقه بینهایت در سی شارپ را بررسی کردهایم.
وقتی که عبارت شرطی وجود نداشته باشد، برنامه چنین در نظر میگیرد که شرط همیشه برقرار «True» است. بنابراین حلقه دائما اجرا میشود. البته برای نوشتن حلقه بینهایت میتوانیم بخشهای شروع و بهروزرسانی شمارنده را هم بنویسیم اما بیشتر برنامه نویسان برای نمایش حلقه بینهایت فقط از for(;;) استفاده میکنند.
حلقه های تو در تو در سی شارپ
برای معرفی کامل انواع حلقه ها در سی شارپ لازم است که «حلقههای تودرتو» (Nested Loops) را نیز بررسی کنیم. حلقه تو در تو به زمانی گفته میشود که یک حلقه درون بلوک کد حلقه دیگری قرار بگیرد. در این حلقهها به ازای هر دور حلقه بیرونی، حلقه درونی باید تمام فرایند پیمایش خود را کامل کند.
در ادامه این بخش، برای بررسی بهتر حلقههای تو در تو در سی شارپ، از چند مثال مختلف استفاده کردهایم.
سینتکس تعریف حلقه تو در تو
در کادر زیر، سینتکس تعریف حلقه for تو در تو را در زبان سی شارپ پیادهسازی کردهایم.
در کادر زیر، سینتکس تعریف حلقه while تو در تو را در زبان سی شارپ پیادهسازی کردهایم.
در کادر زیر، سینتکس تعریف حلقه do …while تو در تو را در زبان سی شارپ پیادهسازی کردهایم.
نکته: برای تعریف حلقههای تودرتو میتوانیم از انواع متفاوتی از حلقهها به صورت ترکیبی استفاده کنیم. یعنی اینکه میتوان حتی حلقهای از نوع while را در داخل حلقه for تعریف کرد و برعکس.

حلقه For تو در تو
در برنامه زیر از حلقه for تو در تو برای پیدا کردن اعداد اول بین 2 تا 100 استفاده کردهایم.
بعد از اینکه کدهای بالا کامپایل و اجرا شدند، نتایج زیر در کنسول سی شارپ نمایش داده میشوند.
2 is prime 3 is prime 5 is prime 7 is prime 11 is prime 13 is prime 17 is prime 19 is prime 23 is prime 29 is prime 31 is prime 37 is prime 41 is prime 43 is prime 47 is prime 53 is prime 59 is prime 61 is prime 67 is prime 71 is prime 73 is prime 79 is prime 83 is prime 89 is prime 97 is prime
حلقه While تو در تو
در برنامه زیر از حلقه while تو در تو برای پیدا کردن اعداد اول بین 2 تا 100 استفاده کردهایم.
بعد از اجرا شدن کدهای بالا نتایج زیر در کنسول سی شارپ نمایش داده میشوند.
2 is prime 3 is prime 5 is prime 7 is prime 11 is prime 13 is prime 17 is prime 19 is prime 23 is prime 29 is prime 31 is prime 37 is prime 41 is prime 43 is prime 47 is prime 53 is prime 59 is prime 61 is prime 67 is prime 71 is prime 73 is prime 79 is prime 83 is prime 89 is prime 97 is prime
حلقه Do While تو در تو
در برنامه زیر از حلقه Do While تو در تو برای پیدا کردن اعداد اول بین 2 تا 100 استفاده کردهایم.
بعد از اینکه کدهای بالا کامپایل و اجرا شدند، نتایج زیر در کنسول سی شارپ نمایش داده میشوند.
2 is prime 3 is prime 5 is prime 7 is prime 11 is prime 13 is prime 17 is prime 19 is prime 23 is prime 29 is prime 31 is prime 37 is prime 41 is prime 43 is prime 47 is prime 53 is prime 59 is prime 61 is prime 67 is prime 71 is prime 73 is prime 79 is prime 83 is prime 89 is prime 97 is prime
جمعبندی
انواع حلقه ها در سی شارپ شامل حلقههای اصلی for و while و do while و foreach هستند. اما زبان سی شارپ با کمک این حلقهها و ترکیب بعضی از آنها ساختاری دیگری هم برای انجام وظایف تکراری یا پیمایش دادهها ساخته است. برای مثال میتوانیم به حلقههای تو در تو یا حلقههای بینهایت اشاره کنیم. در این مطلب از مجله فرادرس با تمام حلقههای قابل استفاده در زبان سی شارپ آشنا شده و برای هر کدام مثالهای ساده کدنویسی شدهای را بررسی کردیم.
برنامه نویسان گاهی از اوقت مجبور به تکرار بخشهای خاصی از کد به تعداد مشخص یا نامشخصی میشوند. بهترین روش انجام این کار استفاده از حلقههاست. بدون وجود حلقهها پیادهسازی بعضی از کدها کاملا غیر ممکن میشود. مخصوصا در مسئلههایی که معلوم نیست وظیفه خاصی چندبار باید تکرار شود.
source