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

انجام چند پروژه سی شارپ، کمک زیادی به افزایش مهارتهای کدنویسی میکند. به همین دلیل، در این مطلب از مجله فرادرس سعی کردهایم که ۱۳ پروژه ساده و کمی پیچیده را با کمک زبان برنامه نویسی سی شارپ پیادهسازی کنیم. تمام پروژهها همراه با کد ارائه شدهاند. افراد مبتدی با بررسی و تمرین بر روی این پروژهها میتوانند تا حد نسبتا خوبی مهارتهای خود را ارتقا داده و به سراغ پروژههای نزدیک به دنیای واقعی بروند.
فهرست ۱۳ پروژه سی شارپ برای تمرین
در این مطلب چند پروژه مختلف را بررسی کردهایم. این پروژهها در دستهبندیهای زیر قرار دارند.
- ساخت بازیهای ساده
- مدیریت خطاهای استثنا
- مدیریت رویداد در سیشارپ
- پروژه سی شارپ برای مدیریت فایلها
سی شارپ، زبان برنامه نویسی مدرن و شیءگرایی است که به سادگی میتوان آن را یاد گرفت. سی شارپ از لحاظ سینتکسی شبیه به جاوا بوده و بنابراین یادگیری آن برای کاربرانی که با زبانهای C و ++C و جاوا آشنایی دارند، سادهتر است. ویژگیهای اصلی زبان #C شامل مدرن بودن، سادگی، سرعت بالا، اوپن سورس بودن، «چند پلتفرمی» (Cross-Platform) بودن، امنیت بالا، چندکاره بودن و استفاده زیاد آن در توسعه برنامههای موبایل و وباپلیکیشنها، وبسایتها، ساخت بازی و پایگاههای داده است.

در ادامه مطلب چند مثال و پروژه مختلف را با زبان #C پیادهسازی کردهایم.
پروژه سی شارپ درباره ساخت بازیهای ساده
در این بخش از مطلب، چهار بازی ساده را کدنویسی کردیم. این بازیها در کنسول زبان سی شارپ اجرا میشوند و بعضی از آنها منطق پیچیدهای دارند. در فهرست زیر، نام بازیهای پیادهسازی شده در این بخش را نوشتهایم.
- بازی حدس عدد
- نمایش روش حل مسئله برج هانوی
- بازی تشخیص پیشوند کلمات
- بازی حدس کلمه
البته ساخت بازی با سی شارپ یکی از رایجترین کاربردهای این زبان است. پروژههای معرفی شده در این مطلب بیشتر حالت تمرینی دارند. اما اگر میخواهید نسبت به این حوزه اطلاعات بسیار بیشتری بدست بیاورید، پیشنهاد میکنیم که فیلم آموزش ساخت بازی با سی شارپ را از فرادرس مشاهده کنید. لینک مربوط به این فیلم را در پایین نیز قرار دادهایم.
در ادامه، روش پیادهسازی گزینههای فهرست بالا را همراه با کد توضیح دادهایم.
بازی حدس عدد
در این بخش از مطلب، کدهای مربوط به بازی حدس عدد را پیادهسازی کردهایم.
- در این بازی، عددی را از بین اعداد 1 تا 100 با استفاده از متغیر input میخوانیم.
- از عبارت شرطی if else به صورت تودرتو برای بررسی مقدار داده ورودی استفاده کردیم.
- اگر مقدار داده ورودی برابر با 0 بود، پس شرط برقرار است. در این حالت باید دستورات درون عبارت شرطی اجرا شوند.
- در غیر این صورت شرط غلط است و باید شرط مقابل عبارت elseif بررسی شود.
- در این حالت بررسی میکند که آیا مقدار عدد ورودی بزرگتر از مقدار متغیر randno است یا نه.
- اگر جواب صحیح بود، دستورات درون این بخش از عبارت شرطی اجرا میشوند. یعنی عبارت Low, try again. چاپ میشود. این عبارت به معنای آن است که «عدد مخفی کوچکتر از مقدار حدس زده شده است. باید دوباره تلاش کنید.»
- با هر دفعه حدس زدن عدد مقدار متغیر count را هم افزایش میدهد.

اما اگر این شرط هم برقرار نبود باید عبارت elseif دیگری اجرا شود. در این حالت بررسی میکند که آیا مقدار ورودی کوچکتر از مقدار متغیر randno است یا نه. اگر شرط برقرار بود، دستورات درون این بخش از عبارتهای شرطی اجرا میشوند. پیغامی با این مضمون که عدد حدس زده شده کوچکتر مقدار مخفی است» بر روی کنسول چاپ میشود. و دوباره صورت مقدار متغیر count کاهش پیدا میکند.
خروجی نمایش داده شده در کادر زیر با اعداد فرضی و دلخواه آزمایش ما نمایش داده شده است.
Enter a number between 1 and 100(0 to quit) : 56 Low,try again. Enter a number between 1 and 100(0 to quit): 67 high,try again. Enter a number between 1 and 100(0 to quit): 59 You guessed it! The number was 59 It took you 2 tries!!!
نمایش روند جابهجایی دیسکها در مسئله برج هانوی
در این برنامه، روش حل مسئله برج هانوی را قدم به قدم نمایش دادهایم. برج هانوی یکی از معماهای ریاضی است. این مسئله شامل سه میله و چند دیسک است. مسئله به این صورت شروع میشود که تمام دیسکها به ترتیب از بزرگ به کوچک، روی یکی از میلههای کناری قرار میگیرند. باید تمام دیسکها را از روی این میله به میله سوم منتقل کنیم. به شرطی که هر بار یک دیسک جابهجا شود و هیچ وقت دیسک بزرگ بر روی دیسک کوچکتر قرار نگیرد.
کدهای مربوط به این مسئله در کادر زیر نوشته شدهاند. این کدها را میتوانید به سادگی و با نرمافزار ویژوال استودیو اجرا کنید.
بعد از اجرای کدهای بالا، با فرض وارد کردن عدد 2 خروجی به شکل زیر نمایش داده میشود.
Enter the Number of Disks : 2 Move Disk 1 from Tower 1 to Tower 2 Move Disk 1 from Tower 1 to Tower 3 Move Disk 1 from Tower 2 to Tower 3
فرایند کلی حل این مسئله به شکل زیر است.
- در این مسئله، تعداد دیسکها را با استفاده از متغیر cnumdiscs از ورودی دریافت میکنیم.
- سپس تابع movetower() را با ارسال مقادیر 1 و 2 و 3 به عنوان مقادیر متغیر فراخوانی کردهایم.
- ابتدا با استفاده از عبارت شرطی if بررسی میکنیم که آیا مقدار وارد شده توسط کاربر بزرگتر از صفر است یا نه.
- اگر این شرط برقرار بود شروع به جابهجایی دیسکها بر روی میلهها به صورت بازگشتی میکنیم.

بازی تشخیص پیشوند کلمات
در این مسئله کلماتی داده میشوند. از کاربر خواسته میشود که پیشوند هر کلمه را تشخیص دهد. در فهرست زیر، مراحل انجام کار را با صورت کلی توضیح دادهایم.
- کلمات نمایش داده شده به کاربر از قبل در برنامه مشخص شدهاند. این کلمات را در آرایه seq[] قرار دادهایم.
- سپس تابع play() را با ارسال مقادیر متغیرهای seq و numrows اجرا میکنیم.
- در تابع play() با کمک حلقه for عبارت پیشوند کلمه انگلیسی داده شده را میخوانیم.
- سپس کلمه داده شده به ورودی را با استفاده از تابع ToLower() به حروف الفبای کوچک تبدیل میکنیم.
- در این حالت از عبارت شرطی if برای بررسی مقدار ورودی استفاده میکنیم. اگر این مقدار با پیشوند کلمه داده شده برابر بود، دستورات درون عبارت شرطی اجرا میشوند.
- از عبارت if دیگری هم برای بررسی برابری بین متغیر given و y استفاده کردهایم. اگر شرط این عبارت برقرار باشد – given و y برابر باشند – دستورات درون بلوک if اجرا میشوند. یعنی مقدار پیشوند را به ازای کلمات داده شده نمایش میدهد.
در کادر زیر، کدهای این پروژه سی شارپ را نوشتهایم.
بعد از اجرای کدهای بالا خروجی به شکل زیر نمایش داده میشود. البته در خروجی ابتدا خط یک و دو و سپس خط سه نشان داده میشوند. بعد از پاسخ دادن به سوالات نوشته شده، خطوط انتهایی خروجی به عنوان جواب نهایی در کنسول ظاهر میشوند.
ENGLISH WORD PREFIX GAME What is the correct prefix of 'substring' : sub What is the correct prefix of 'input' : in CHECK YOUR ANSWERS!!!! Word Prefix Description substring sub correct input in correct
بازی حدس کلمه
این بازی در زبان انگلیسی به نام «HangMan Game» شناخته میشود. در این بازی کلمهای توسط برنامه انتخاب میشود. سپس کاربر حرف به حرف کلمه را حدس میزند. این کار تا جایی ادامه پیدا میکند که کاربر موفق به حدس کامل کلمه شود.
در این بازی با استفاده از متغیر guess کاراکترهای حدس زده شده را از ورودی دریافت میکنیم. همینطور به ترتیب کاربر حروفی را حدس میزند و بازی ادامه پیدا میکند. با استفاده از حلقه for کاراکتر * را به جای حروف الفبای حدس زده نشده قرار میدهیم. در ابتدا متغیر p را با مقدار 0 مقداردهی کردهایم. در طول بازی دائما بررسی میکنیم که آیا طول متغیر p کوتاهتر از طول متغیر mysteryWord است یا نه.

از حلقه while (true) برای اجرای دستورات برنامه استفاده میکنیم. در داخل این حلقه، عبارت شرطی if هم برای بررسی مقدار متغیر playerGuess به کار برده میشود. این عبارت شرطی برابری اندازه متغیرهای playerGuess و mysteryWord را بررسی میکند. اگر شرط برقرار بود، دستورات درون if اجرا میشوند.
بعد از اجرای کدهای بالا، خروجی به شکل زیر نشان داده میشود. البته این خروجی به صورت تصادفی است. زیرا برنامه از بین کلمات ذخیره شده در لیست listwords یکی را به صورت تصادفی انتخاب میکند.
Welcome to Hangman!!!!!!!!!! Please enter your guess: i **** a **a* e **a* g g*a* o goa* t goat
یادگیری سی شارپ با کمک فرادرس
سی شارپ (#C) زبان برنامهنویسی مدرن، شیء گرا و چندمنظوره است. این زبان بر روی «NET Framework.» کار میکند. سی شارپ میتواند با هدف توسعه نرمافزارهای متنوعی مانند برنامههای دسکتاپ، برنامههای تحت وب، اپلیکیشنهای موبایل و بازیهای کامپیوتری به کار برده شود. این مسئله باعث شده است که فرادرس مجموعهای از فیلمهای آموزشی متنوع برای این زبان تهیه کند. هر کدام از توسعهدهندگان مبتدی و حرفهای #C با مراجعه به وبسایت آموزشی فرادرس میتوانند فیلمهای مربوط به سطح خود را پیدا کنند. مشاهده منظم و دقیق این فیلمها تاثیر زیادی در کسب مهارتهای پیشرفته دارد.

کسب مهارت در کار با زبان سی شارپ، موقعیتهای شغلی فراوانی را در مقابل افراد قرار میدهد. به همین دلیل افراد زیادی به دنبال پیدا کردن منابع مورد اعتماد و با کیفیت برای یادگیری سی شارپ هستند. در پایین، چند مورد از فیلمهای آموزشی تولید شده توسط فرادرس را مشاهده میکنید. در صورت تمایل بر روی تصویر بالا کلیک کرده و باقی فیلمهای مجموعه آموزش سی شارپ را نیز بررسی کنید.
در ادامه مطلب به بررسی چند مسئله درباره مدیریت خطا در سی شارپ پرداختهایم.
چند پروژه سی شارپ درباره مدیریت خطاهای استثنا
در این بخش از مطلب، چند کد درباره روش مدیریت خطاهای استثنا را در سی شارپ بررسی کردهایم. این کدها مربوط به موارد زیر هستند.
- خطای «اندیس خارج از محدوده» (IndexOutOfRange)
- خطای «تقسیم بر صفر» (DivideByZero)
- خطای «تغییر نوع نامعتبر» (Invalid TypeCasting)
البته تعداد خطاهای برنامه نویسی بیشتر از موارد فهرست بالا است. اما در اینجا به سه مورد از رایجترین خطاها اشاره کردهایم. برای اطلاع از انواع خطاهای برنامه نویسی، میتوانید مطلب مربوط به این موضوع را در مجله فرادرس مطالعه کنید.
در ادامه، برای هر کدام از مسائل مطرح شده در بالا، برنامه مرتبط را نوشتهایم.
مدیریت خطای استثنای IndexOutOfRange
این خطا در صورتی رخ میدهد که در زمان دسترسی به یکی از ساختارهای پیمایشپذیر منظم از اندیس خارج از محدوده استفاده کنیم. برای مثال، آرایهای به نام arr با ۱۰ خانه تعریف کردهایم. اشاره به خانه arr[10] باعث رویدادن این خطا میشود. زیرا اندیس در ساختارهای پیمایشپذیر همیشه از 0 شروع میشود. در نتیجه آخرین خانه این آرایه arr[9] است. شماره اندیس بزرگتر از 9 در این آرایه باعث برگشتن پیغام خطا میشود.
در کدهای زیر، یان خطا اتفاق افتاده و سپس مدیریت شده است. برای اجرای این کدها میتوانید از ویژوال استودیو استفاده کنید.
در فهرست زیر، روش روش کار کدهای بالا را توضیح دادهایم.
- ابتدا از کلاسی به نام arrayoutofindex شیئی به نام ob ایجاد میکنیم.
- سپس با کمک شیء ob تابع «()calculateddifference» را اجرا میکنیم.
- در تابع «()calculateddifference» مقدار را به آرایه number[] اختصاص میدهیم.
- داخل بلوک try از حلقه for استفاده کردهایم. این حلقه وظیفه محاسبه اختلاف بین مقدار variable و مقدارهای ذخیره شده در number[] را بر عهده دارد.
- از آنجا که در این برنامه آرایه از اندیسی خارج از محدوده مجاز خود استفاده میکند، خطای استثنا IndexOutOfRange رخ خواهد داد.
- با استفاده از ساختار try و catch برنامه میتواند خطای به وجود آمده را مدیریت کند. وقتی که این خطا روی داد، بلوک catch بهجای متوقف کردن برنامه فقط پیغام خطا برمیگرداند.
بعد از اجرای این برنامه و رویدادن خطا پیغام زیر بر روی کنسول ظاهر میشود.
Index was outside the bounds of the array
مدیریت خطای DivideByZero
این خطا زمانی روی میدهد که در بین انجام محاسبات برنامه – معمولا به طور ناخواسته – متغیر مقسومعلیه، برابر با صفر میشود. در ریاضیات تقسیم بر صفر تعریف نشده است. در کامپیوتر هم انجام این تقسیم باعث رویدادن خطای DivideByZero میشود.

در کادر زیر کدی نوشتهایم که فرایند این خطا و روش مدیریت آن را نشان میدهد.
در داخل بلوک try برنامه تلاش میکند که عدد 15 را بر عدد 0 تقسیم کند. این کار با استفاده از متغیری به نام result انجام میشود. انجام این عمل تقسیم باعث ظاهر شدن پیغام خطای استثنای DivideByZero میشود. زیرا انجام تقسیم بر صفر در کامپیوتر مجاز نیست. با استفاده از بلوکهای try و catch برنامه این خطا را مدیریت میکند و بهجای متوقف شدن ناگهانی، فقط پیغام خطا نمایش میدهد.
بعد از اجرای این برنامه و رویدادن خطا پیغام زیر بر روی کنسول ظاهر میشود.
Attempted to Divide by Zero
مدیریت خطای Invalid TypeCasting
بعضی از وقتها بعد از انجام غلط عملیات «Unboxing» خطای InvalidCastException روی میدهد. در کدهای زیر برای مدیریت خطا از بلوکهای try و catch استفاده کردهایم.
در کدهای بالا عملیات Unboxing به روش غلطی انجام شده است. در این کدها به محض رویدادن خطای InvalidCastException بلوک catch فعال شده و پیغام خطا نشان میدهد.
بعد از اجرای این برنامه و رویدادن خطا پیغام زیر بر روی کنسول ظاهر میشود.
Specified Cast is not Valid.Error : Incorrect Boxing
پروژه سی شارپ برای مدیریت رویداد
در این بخش از مطلب سه پروژه سی شارپ را درباره «مدیریت رویداد» (Event Handling) بررسی کردهایم.
- ساخت «نوار پیشرفت» (Progress Bar)
- ساخت «دکمه رادیویی» (Radio Button)
- بررسی اینکه آیا دکمه ENTER فشار داده شده یا نه
در ادامه مطلب، تمام موارد فهرست بالا را یک به یک بررسی کردهایم.
ساخت نوار پیشرفت
نوار پیشرفت، عنصری است که به صورت مصور، مقدار پیشرفت انجام کار خاصی را نشان میدهد. بهترین مکان استفاده از این ابزار برای نشان دادن مقدار پیشرفت محاسبات یا وظایف طولانی است.
کدهای نوشته شده در کادر زیر یک نوار پیشرفت ساده را نشان میدهند. این کدها را میتوانید در نرمافزار ویژوال استودیو نوشته و اجرا کنید.
در کدهای بالا سیستم مدیریت «نوار پیشرفت» (Progress Bar) را ساختهایم. نوار پیشرفت برای نمایش روند اجرای عملیات طولانی استفاده میشود. کاربران با کمک این نوار متوجه میشوند که عملیات مورد نظر هنوز در حال انجام است و آنها باید تا به پایان رسیدن عملیات صبر کنند.
- در این کد، تابع Thread.Sleep() برای متوقف کردن «نخ» (Thread) یا جریان محاسباتی فعلی به مدت چند میلیثانیه به کار برده شده است.
- در متد ProgressChanged با استفاده از ProgressPercentage، مقداری به ProgressBar اختصاص داده میشود.
- از ProgressPercentage برای نظارت بر مقدار کار انجام شده استفاده میشود. این عدد به صورت درصدی محاسبه میشود.
- از تابع RunWorkerAsync() برای اجرای وظیفه خاصی در پسزمینه استفاده میشود.
در این برنامه، از نوار پیشرفت برای نشان دادن مقدار پیشرفت اجرای عملیات خاصی به صورت تصویری استفاده شده است. از این ابزار باید برای نشان دادن وضعیت عملیات یا محاسبات طولانی استفاده کرد.
بعد از اجرای کدهای بالا خروجی به شکل زیر نمایش داده میشود.

ساخت دکمه رادیویی
در این مسئله، دکمه رادیویی را با اپلیکیشن «Windows Forms» ایجاد کردهایم. سپس کدهای آن را به زبان سی شارپ نوشتیم.
برنامه نوشته شده در بالا دکمه رادیویی ایجاد کرده و روش کار آن را نشان میدهد.
ابتدا دکمه رادیویی را با کمک اپلیکیشن Windows Forms ایجاد کردهایم. وقتی که کاربر یکی از گزینهها را انتخاب میکند، نام حیوان مورد نظر در یک «Message Box» نمایش داده میشود.

پروژه سی شارپ برای نظارت بر فشردن دکمه ENTER
در این بخش از مطلب، برنامهای را مینویسم که فشرده شدن دکمه «ENTER» را بررسی کند. این برنامه دکمه ENTER را زیر نظر دارد. هر وقت دکمه ENTER فشرده شد، پیغامی بر روی Message Box ظاهر شده و این مسئله را خبر رسانی میکند.
در این برنامه Message Box و فرم اصلی با استفاده از اپلیکیشن Windows Forms ساخته شدهاند.
در کادر بالا، کدهایی نوشتهایم که فشرده شدن دکمه ENTER را بر روی صفحه کلید رصد میکنند. در صورت بروز این اتفاق پیغامی به کاربر نمایش داده میشود.
- متد textBox1_KeyUp زمانی اجرا میشود که یکی از کلیدهای روی صفحه کلید فشرده شده و سپس رها شود.
- پارامتر KeyEventArgs e اطلاعات کلید فشرده شده را به بیرون برمیگرداند.
در این کدها از عبارت شرطی if برای بررسی برابری بین KeyValue و عدد ۱۳ استفاده کردهایم. برقراری این شرط، به معنای آن است که دکمه ENTER فشرده شده است. اگر دکمه ENTER فشرده شده و رها شود، شرط برقرار شده و دستور درون آن برای نمایش دادن Message Box با پیغام “Enter key pressed” اجرا میشود.

توجه: عدد ۱۳، کد مربوط به دکمه ENTER بر روی صفحه کلید است.
چگونه با کمک فیلمهای فرادرس انجام پروژه سی شارپ را یاد بگیریم؟
فرادرس برای آموزش انجام پروژههای مختلف با سی شارپ، مجموعهای از فیلمهای پروژهمحور را گردآوری کرده است. از آنجا که زبان برنامه نویسی C# کاربردهای بسیار متنوعی دارد، پروژههای کوچک و بزرگ مختلفی را میتوان برای آن تعریف کرد. در نتیجه مجموعه آموزشی تولید شده توسط فرادرس شامل فیلمهای زیاد و متنوعی در حوزههای گوناگون است. این حوزهها از بازیسازی تا توسعه اپلیکیشنهای تحت وب و نرمافزارهای دسکتاپ در ویندوز و غیره را شامل میشوند. در پایین چند مورد از فیلمهای آموزش پروژهمحور سی شارپ را معرفی کردهایم.
برای دیدن سایر فیلمها بر روی تصویر زیر کلیک کرده و به صفحه اصلی این مجموعه آموزشی هدایت شوید.

پروژه سی شارپ برای مدیریت فایل ها
در این بخش از مطلب، چند مسئله ساده مربوط به مدیریت فایلها را با استفاده از زبان برنامه نویسی سی شارپ پیادهسازی کردهایم.
- برنامه خواندن متن با استفاده از کلاس StringReader
- فهرست کردن تمام درایوهای در دسترس بر روی دیسک
- فهرست کردن تمام فایلهای موجود در دایرکتوری

پروژههای مطرح شده در این بخش، بیشتر مناسب افراد مبتدی است که میخواهند با سی شارپ آشنا شوند. اگر تمایل داشته باشید مهارت کار با فایلها را در سی شارپ بدست بیاورید، میتوانید فیلم آموزش کار با فایل ها و دایرکتوری در C# را از فرادرس مشاهده کنید. به منظور کمک به مخاطبان مجله، لینک مربوط به این فیلم را در پایین نیز قرار دادهایم.
در ادامه، برای هر کدام از مسائل مطرح شده در بالا، برنامه مرتبط را نوشتهایم.
استفاده از کلاس StringReader
در این برنامه میخواهیم متنی را به صورت خط به خط خوانده و در خروجی نمایش دهیم. متن موجود در برنامه را خودمان نوشتهایم. اما میتوان آن را طوری تنظیم کرد که متن را از کاربر دریافت کند. در واقع در این برنامه، طوری با دادههای رشتهای رفتار میکنیم که انگار این اطلاعات را از روی یک فایل میخوانیم.
کدهای نوشته شده در کادر بالا روش استفاده از کلاس StringReader را نمایش میدهند.
- در اینجا از کلاس StringReader شیئی با نام reader ایجاد کردهایم.
- سپس، StringReader متن تشکیل شده از کاراکترهای رشتهای را به صورت خط به خط میخواند. این عملیات با همان ترتیبی انجام میشود که متن از بالا به پایین نوشته شده است.
- از حلقه while برای بررسی خالی نبودن خطها استفاده کردهایم.
- تا زمانی که شرط «reader.ReadLine() != null» برقرار باشد – یعنی خط خالی نباشد – دستورات درون عبارت while به صورت تکراری اجرا میشوند.
- شیء reader به توسعهدهندگان کمک میکند تا دادههای رشتهای را به صورت خط به خط بخوانند. طوری که انگار دادههای نوشته شده در فایل، خوانده میشود.
بعد از اجرای این برنامه خروجی به شکل زیر بر روی کنسول ظاهر میشود.
Line 1 : Sanfoundry Line 2 : Offers Training and Competency Line 3 : development programs
فهرست کردن تمام درایوهای در دسترس بر روی دیسک
در این مثال برای فهرست کردن تمام درایوهای در دسترس بر روی دیسک، از تابع DriveInfo.GetDrives استفاده کردهایم.
کدهای نوشته شده در کادر بالا تمام درایوهای در دسترس بر روی دیسک را فهرست میکنند. روش کار این کدها را به شکل کلی در پایین توضیح دادهایم.
- برای دسترسی به اطلاعات درایوهای کامپیوتر از تابع DriveInfo.GetDrives() استفاده کردهایم.
- سپس با استفاده از عبارت شرطی if هر کدام از درایوها را بررسی کرده و مقدار کل حافظه در دسترس برای آنها را در خروجی چاپ کردهایم.

بعد از اجرای کد بالا خروجی زیر تولید و نمایش داده میشود. این خروجی بر روی هر کامپیوتری با توجه به حافظه و درایوهای سیستم همان کامپیوتر نمایش داده میشود.
Drive C: File type: Fixed Total size of drive: 119375466496 bytes
فهرست کردن فایلهای موجود در دایرکتوری
در این مسئله میخواهیم برنامهای بنویسیم که تمام فایلهای موجود در دایرکتوری خاصی را نمایش دهد. به این منظور از تابع directory.getfiles() استفاده کردهایم.
کدهای نوشته شده در بالا تمام فایلهای موجود در مسیر مشخص شده را نشان میدهند.
- برای گرفتن مشخصات فایلهای موجود در دایرکتوری مشخص شده، از تابع Directory.GetFiles() استفاده کردهایم.
- به عنوان آدرس و به صورت دلخواه مسیر «“C:Usersm.rashidiDesktopDownloads”@» را از کامپیوتر خودمان تعریف کردیم.
- همینطور که مشخص است تابع Directory.GetFiles() آرایهای از رشتهها (string[]) را برمیگرداند. هر رشته در این آرایه، مسیر کامل یکی از فایلهای موجود در آدرس «“C:Usersm.rashidiDesktopDownloads”@» را نشان میدهد.
- سپس با استفاده از حلقه foreach فهرست تمام فایلها را یک به یک در خروجی چاپ میکند.
بعد از اجرای کد بالا خروجی زیر تولید و نمایش داده شد. خروجی کد بالا در هر کامپیوتر با توجه به آدرس مشخص شده و فایلهای موجود در آن آدرس، نمایش داده میشود.
Files in the Directory C:Usersm.rashidiDesktopDownloadsCSharp Installer.exe C:Usersm.rashidiDesktopDownloadsdotnet-sdk-9.0.202-win-x64.exe C:Usersm.rashidiDesktopDownloadspython-3.13.2-amd64.exe C:Usersm.rashidiDesktopDownloadsVisualStudioSetup.exe C:Usersm.rashidiDesktopDownloadsVSCodeUserSetup-x64-1.98.2.exe
جمعبندی
در این مطلب از مجله فرادرس، چند پروژه سی شارپ را جمعآوری کردهایم. این پروژهها بیشتر شامل تکه کدهای سادهای هستند که در زمان توسعه نرمافزارهای واقعی مورد نیاز برنامه نویسان قرار میگیرند. مسئلههای مطرح شده در این مطلب، هم قدرت زبان برنامه نویسی #C را نشان میدهند و هم ابزار مناسبی برای تمرین و تقویت مهارتهای کاربران هستند. فرقی نمیکند که توسعهدهنده حرفهای باشید یا فرد تازه کار، توجه به کدهای نوشته شده در این مطلب باعث افزایش تواناییهای شما میشود.
زبان برنامه نویسی سی شارپ، یکی از زبانهای سطح بالا و چندمنظوره است. این زبان از شیءگرایی پشتیبانی کرده و در عین حال، سرعت زیادی دارد. کاربرد زبان سی شارپ به پروژههای خاص محدود نمیشود و تقریبا در همه حوزهها حضور دارد. به همین دلیل موقعیتهای شغلی متنوع و زیادی در مقابل توسعهدهندگان زبان سی شارپ قرار گرفته است.
source