namespace : یا فضای نام
راهی است برای جدا سازی و جلوگیری از تداخل مجموعه ای از اسامی کلاس ها ، متغییرها و ... که در یک برنامه وجود دارند .
اگر فرضا namespace وجود نداشته باشد ، ما در برنامه خود قادر به استفاده از اسامی مشابه نخواهیم بود البته این یکی از خواص فضای نام می باشد . مضافا اینکه با وجود namespace دیگر سیستم هنگام جستجو برای پیدا کردن مثلا یک متغییر مجبور به جستجو در کل برنامه نبوده و فقط فضای جاری را جستجو می کند و این بر افزایش سرعت برنامه بسیار موثر می باشد.
برای تعریف یک فضای نام از روش زیر استفاده می کنیم.
namespace namespace_name
{
// code declarations
}
برای فراخوانی هر کدام از اجزاء داخل یک فضا از روش زیر استفاده می شود
namespace_name.item_name;
شاید الآن خارج از تصور شما باشد که در سی شارپ هر چیزی می تواند یک آبجکت باشد و می تواند فضای نام داشته باشد
بعنوان مثال وقتی ما با دستور کنسول زیر از برنامه می خواهیم تا برای ما متنی را بنویسد در واقع از فضای نام سیستم استفاده برده ایم
Console.WriteLine ("Hello there");
در خط بالا ما نام سیستم را ننوشته ایم و آن هم بدلیل آن آست که نام سیستم در قسمت یوزینگ ها یک بار ذکر شده اگر شما یوزینگ سیستم را پاک کنید بایستی برای استفاده از هر کدام از زیر مجموعه های آن بشکل زیر عمل کنید
System.Console.WriteLine("Hello there");
در این پست لیست کاملی از کیوردهای رزرو شده در سی شارپ رو ملاحظه می کنید .
منظور از رزرو شده این است که شما در هنگام برنامه نویسی به زیان سی شارپ نمی توانید از این کلمات بعنوان " شناسه " استفاده کنید زیرا این کلمات قبلا به کمپایلر برنامه برای منظور خاصی معرفی شده اند و کمپایلر آنها را فقط با همان نقش می شناسد.
در اینجا ما قصد نداریم به همین ترتیبی که این اسامی ذکر شده اند و با توضیح تک تک آنها به شما برنامه نویسی یاد دهیم زیرا به این ترتیب شما نه تنها چیزی از برنامه نویسی یاد نمی گیرید بلکه با اینکار سردرگم هم می شوید. زیرا این کلمات هر کدام مربوط به بخشی از برنامه نویسی است که از نظر مفهوم و کاربرد ارتباطی با همدیگر ندارند و آموزش آنها به این ترتیب به نوعی از این شاخه به آن شاخه پریدن است لذا همان گونه که در بالا ذکر شد فقط بدانید که این کلمات بخشی از کلمات رزرو شده می باشد.
البته ناگفته نماند که در واقع سی شارپ راهکاری هم برای آنکه شما در صورت لزوم بتوانید از این کلمات بعنوان " شناسه " نیز استفاده کنید قرار داده و آن هم استفاده از علامت @ قبل آن کلمه می باشد.
مثلا کلمه رزرو شده Class را شما در صورت تمایل می توانید بصورت Class@ نوشته و از آن استفاده کنید .
ولی بهتر است برای بالا بردن خوانایی برنامه از این روش نیز کمتر استفاده کنید .
abstractdoinprotectedtrueasdoubleintpublictrybaseelseinterfacereadonlytypeofboolenuminternalrefuintbreakeventisreturnulongbyteexplicitlocksbyteuncheckedcaseexternlongsealedunsafecatchfalsenamespacenamespaceshortushortcharfinallynewsizeofusingcheckedfixednullstackallocvirtualclassfloatobjectstaticvoidconstforoperatorstringvolatilecontinueforeachoutstructwhiledecimalgotooverrideswitchdefaultifparamsthisdelegateimplicitprivatethrow
تعدادی از کیوردها موسوم به کیوردهای متنی می توانند بدون استفاده از علامت (@) بعنوان شناسه بکار بروند لیست این کیوردها در پایین آمده است. orderbyin dynamicaddletgetawaitvarpartial intoequalsascendingjoinfromasync whenyieldselectwhereremovesetnameofglobalbyvalueongroupdescending
برای مواقعی که نمیخواهید از IDE
برای اجرای برنامه سیشارپ استفاده کنید، میتونید اون رو بهصورت
دستی کمپایل و اجرا کنید.
کمپایلر سیشارپ csc.exe است
که کد شما رو به فایل اجرایی تبدیل میکنه. برای این کار، میتونید از یک بچ فایل
(فایلی با پسوند bat که
در Notepad نوشته میشه)
استفاده کنید.
اگه نام فایلتون MyProgram.cs باشه، بچ فایل
رو اینطوری بنویسید:
csc MyProgram.cs
MyProgram.exe
بعد از ذخیره بچ فایل با پسوند bat و
قرار دادنش کنار فایل MyProgram.cs ، کافیه روی اون دبلکلیک
کنید تا هم کمپایل بشه و هم برنامه اجرا بشه.
نکته : مطمئن بشید که csc.exe در PATH سیستم
باشه یا مسیر کاملش رو در بچ فایل بنویسید.
آشنایی با ساختار کلی یک برنامه در سیشارپ
برای شروع یادگیری زبان برنامهنویسی سیشارپ، اولین قدم شناخت ساختار کلی و اجزای اصلی یک برنامه است. البته نمیشه همه اجزای یک برنامه رو با یه مثال ساده نشون داد؛ این درک با تمرین و مثالهای متعدد بهتدریج کامل میشه. در اینجا ساختار کلی یه برنامه ساده (با برخی اجزای اصلی) توضیح داده میشه تا به شما در فهم بهتر و یادگیری برنامهنویسی کمک کنه.
اجزای اصلی برنامه
1.
دستور using: اولین خط برنامه
معمولاً با کلمه using شروع میشه. این دستور مشخص میکنه که برنامه برای اجرا به چه
کتابخونهها یا قابلیتهایی نیاز داره. مثلاً using System; یعنی از کتابخونه
استاندارد سیشارپ (که بخشی از داتنت هست) استفاده میکنیم.
این کار
باعث میشه که نیازی نباشه همه امکانات مورد نیاز رو داخل هر برنامه جداگانه ذخیره
کنیم، چون این کار حجم برنامهها رو بیش از حد زیاد میکنه. شرکت مایکروسافت این
امکانات رو در مجموعهای به نام فریمورک داتنت (.NET Framework) جمعآوری کرده که
شامل فایلهای سیستمی (مثل DLLها) در درایو C شماست. اگه این فایلها روی سیستم شما نباشن، برنامه موقع اجرا خطا میده
و پیامی مثل «این برنامه روی سیستم شما قابل اجرا نیست» نشون داده میشه.
2. فضای نام (Namespace): خط بعدی معمولاً تعریف فضای نام برنامهست (مثل namespace My_first_program). فضای نام یه محدوده منطقی ایجاد میکنه که تمام اجزای برنامه (مثل کلاسها) داخل اون قرار میگیرن. این اسم میتونه نمایانگر نام پروژه یا برنامه شما باشه و به سازماندهی کدها کمک میکنه.
3.
کلاس (Class): بعد از فضای نام، یه کلاس
تعریف میشه (مثل class Program). کلاس مفهوم اساسی در برنامهنویسی شیءگرا
(Object-Oriented Programming) است که سیشارپ هم بر اساس اون ساخته شده.
تو
برنامهنویسی شیءگرا، همه چیز مثل اشیای دنیای واقعی در نظر گرفته میشه. کلاس مثل
نقشه یه ساختمونه که از روش میتونیم هر تعداد شیء واقعی (به اسم آبجکت یا نمونه -
Instance) بسازیم.
مثلاً از نقشه یه خونه میشه چند خونه ساخت که هر کدوم رنگ، اندازه یا تعداد اتاق
متفاوتی داشته باشن، ولی همه از همون نقشه اصلی پیروی میکنن. تقریباً هیچ برنامهای
بدون کلاس نوشته نمیشه، پس فهمش خیلی مهمه.
4. تابع اصلی (Main): تو برنامههای کنسولی سیشارپ، تابع Main نقطه شروع اجراست. وقتی برنامه اجرا میشه، سیستم از این تابع شروع به خوندن و اجرای دستورات میکنه. این تابع معمولاً با عبارت static void Main(string[] args) تعریف میشه.
5. دستورات اجرایی: داخل تابع Main، کدهایی مثل Console.WriteLine و Console.ReadLine میبینیم:
o Console.WriteLine("welcome to c#");: این خط به سیستم میگه یه متن (مثلاً "welcome to c#") رو روی صفحه نمایش بده. هر چیزی که بین دو نقلقول ("") باشه، همون نمایش داده میشه.
o Console.ReadLine();: این خط برنامه رو متوقف میکنه و منتظر میمونه تا کاربر کلیدی (مثل Enter) بزنه. تو این مثال، چون خط بعدی وجود نداره، بعد از زدن Enter برنامه تموم میشه.
6. توضیحات (Comments): خطوطی مثل // Output of text to the user توضیحاتی هستن که برای برنامهنویس نوشته میشن و تو اجرای برنامه نقشی ندارن. این توضیحات (کامنتها) تو برنامههای بزرگ خیلی مهم میشن تا عملکرد کدها فراموش نشه.
7. آکولادها ({ و }): آکولادها محدوده هر بخش از برنامه (مثل کلاس یا تابع) رو مشخص میکنن. تو سیشارپ استفاده ازشون اجباریه و به مرتب نگه داشتن ساختار کد کمک میکنه.
مثال کامل برنامه کنسولی
using System;
namespace My_first_program
{
class Program
{
static void Main(string[] args)
{
// نمایش متن به کاربر
Console.WriteLine("welcome to c#");
// منتظر زدن Enter
Console.ReadLine();
}
}
}
در زبان سیشارپ، کلیدواژه out برای تعریف
پارامترهای خروجی تو متدها استفاده میشه. وقتی از out استفاده میکنید، متد
میتونه یه مقدار رو به متغیر بیرون از خودش برگردونه، بدون اینکه اون متغیر قبل
از ارسال به متد مقدار اولیه داشته باشه. این کلیدواژه معمولاً تو سناریوهایی به
کار میره که میخواهیم یه متد بیشتر از یه نتیجه به ما بده، مثلاً یه مقدار و یه
وضعیت موفقیت یا شکست.
کد زیر
مثالی از کاربرد out رو نشون میده:
static void Main(string[] args)
{
int number;
if (TryParse("42", out number))
Console.WriteLine($"عدد: {number}");
else
Console.WriteLine("تبدیل نشد");
}
static bool TryParse(string input, out int result)
{
if (int.TryParse(input, out result))
return true;
result = 0; // اختصاص مقدار پیشفرض
return false;
}