محدوده بلاک و ساختار کلی دستورات
نام دوره: زبان سی شارپ مقدماتی
نویسنده: علی مقدم جاه (مدرس دوره)
محدوده بلاک و ساختار کلی دستورات
برای توضیح محدوده بلاک و ساختار کلی دستورات، نیاز است تا ابتدا بدانید که اصلا بلاک و محدوده بلاک چیست؟
در پستهای بعدی در رابطه با اینکه اصلا متد یا کلاس چیست صحبت خواهیم کرد، اما فعلا شما در همین حد بدانید که متدها در دنیای واقعی شبیه به یک دستگاه هستند؛ به عنوان مثال دستگاه کتری برقی را تصور کنید.
یک کتری برقی میتواند حجم مشخصی از آب را درون خود نگهداری کند، چیزی که باعث میشود این مقدار آب درون کتری برقی نگهداری شود، بدنه آن کتری برقی است.
تمامی Namespace ها، Class ها و Method ها نیز دارای یک بدنه هستند که ابتدای بدنه با علامت آکولاد باز و انتهای بدنه با علامت آکولاد بسته مشخص میشوند.
همانطور که بدنه کتری برقی باعث میشود تا آب را درون خود نگهداری کند، آکولادها نیز باعث میشوند تا کدهای ما درون متد یا کلاس یا فضای نام قرار داده شوند.
پس به حد فاصل آکولاد باز (یعنی کاراکتر { ) تا آکولاد بسته(یعنی کاراکتر } )، محدوده بلاک میگوییم، به چند مثال زیر دقت کنید:
namespace ConsoleApplication
{
}
class Program
{
}
static void Main(string[] args)
{
}
بخش اول کد یک Namespace، بخش دوم کد یک Class و بخش سوم کد یک Method است که هر سه با یک آکولاد باز و بسته برای خود محدودهای را در نظر گرفته اند؛ حال برنامهنویس میتواند طبق نیاز خود درون این بلاک کدهای مربوط به هر کدام را بنویسد.
اما باید توجه داشته باشیم که ساختار تو در تو باید رعایت شود! البته نه هر تو در تویی!
در بین سه دستور Namespace – Class – Method، فضای نام در بالاترین سطح قرار داشته و پس از آن کلاسها و در نهایت متدها قرار دارند، درنتیجه باید ساختار نوشتن این سه دستور بصورت تو در تو باشد:
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
}
}
}
همانطور که در مثال فوق مشاهده میکنید، متد درون کلاس و کلاس درون فضای نام نوشته شده است.
ما نمی توانیم متد ها را درون فضای نام تعریف کنیم! درنتیجه مثال زیر اشتباه است:
namespace ConsoleApplication
{
static void Main(string[] args)
{
}
}
!نمیشه متد را درون فضای نام تعریف کرد
و به همین ترتیب نمیشه که کلاس را درون متدها تعریف کنیم! این کار هم اشتباه است:
static void Main(string[] args)
{
class Program
{
}
}
نمیشه کلاس را درون متد تعریف کرد!
پس متوجه شدیم که باید حتما ساختار namespace–> class–> method رعایت بشه، اما اگه نیاز به چندین کلاس یا متد داشتیم باید چیکار کنیم؟
همانطور که قبل تر گفته شد، کلاسها را باید درون محدوده بلاک namespace نوشت، درنتیجه میتواند چندین کلاس را در یک namespace تعریف کرد:
namespace ConsoleApplication
{
class className1
{
}
class className2
{
}
}
با این اوصاف در محدوده namespace میتوان بی نهایت class تعریف کرد؛ این قانون در رابطه با متدها نیز صادق است!
متدها را درون محدوده بلاک کلاس مینویسیم، پس اگر نیاز به چندین متد داشتیم، میتوانیم در محدوده بلاک کلاسمان متد جدید را تعریف کنیم:
class className1
{
static void MethodName1(string[] args)
{
}
static void MethodName2(string[] args)
{
}
}
اگر قاعده بالا را رعایت کنید، سیستم به هیچ عنوان به شما خطایی در این رابطه نخواهد داد.
جهت شرکت در دورههای زبان برنامه نویسی سیشارپ، از کد تخفیف heplc30 استفاده کنید.