سبد خرید 0

وبلاگ

فضای نام در دات نت

فضای نام (namespace) چیست :
فضای نام ساختاری است برای دسته بندی و گروه بندی کلاس / ساختار / نوع های شمارشی و…  که به هم مرتبط هستند .
مثلا در NET. تمامی کلاس هایی که مربوط به خواندن و نوشتن فایل ها هستند در فضای نام IO قرار داده شده اند.
فضاهای نام به طور ضمنی public می باشند و این نکته را بخاطر داشته باشید که نمی توان برای فضاهای نام سطح دسترسی تعیین نمود . در صورتی که بخواهید برای یک فضای نام (namespace) سطح دسترسی تعیین کنید با خطای زیر رو به رو خواهید شد :

A namespace declaration cannot have modifiers or attributes

هر پروژه ای که ایجاد می کنید چه Windows form و چه Web forms همگی دارای یک فضای نام همنام با نام پروژه ایجاد شده هستند و تمامی کلاس ها و فرم هایی که ایجاد میکنید همگی در این فضای نام قرار دارند .

شکل کلی فضای نام ها :

این امکان وجود دارد تا فضاهای نام تو در تو ایجاد کنید در واقع فضای نام مورد نظر را در داخل فضای نام والد تعریف میکنید :

 برای استفاده از کلاس ها / ساختار ها و … موجود در فضا نام های مختلف و تودر تو  می بایست اسم فضای نام مربوطه را تا رسیدن به کلاس / ساختار مورد نظر با استفاده از . (نقطه) نوشت به صورت زیر :

تکرار هر بار کد فوق برای استفاده از کلاس های مورد نظر کاری خسته کننده  می باشد برای اینکه هر بار کد فوق را در جای جای پروژه تکرار نکنید می توانید فضای نام مورد نظر را به پروژه خود اضافه کنید به صورت زیر :

و در هر کجا خواستید فقط کافیست اسم کلاس مورد نظر را بنویسید.

برای درک بهتر و آشنایی بیشتر با نحوه استفاده از فضاهای نام یک پروژه از نوع
WindowsFormsApplication به اسم SimpleNamespace ایجاد کنید .
کلید f7 را فشار دهید تا به محیط code فرم بروید می بینید که فرم ما در فضای نام simpleNamespace قرار دارد .

بر روی solution کلیک راست کرده و گزینه Add>New Project را انتخاب نمایید و یک پروژه از نوع Class Library با اسم FirstLib اضافه نمایید .
به صورت پیش فرض پروژه ایجاد شده  دارای یک کلاس به اسم Class1 می باشد که در فضای نام FirstLib قرار دارد .
کلاس دیگری به اسم class2 به پروژه FirstLib اضافه کنید و اسم فضای نام را از FirstLib به FirstLib2 تغییر دهید .
حال اگر در کلاس Class2 بخواهید به Class1 دسترسی داشته باشید ابتدا می بایست فضای نامی را که class1 در آن قرار دارد به class2 بیفزاید :

using FirstLib;

بعد از افزودن فضای نام فوق می توان به کلاس های موجود در فضای FirstLib دسترسی داشت .

در صورتی که بخواهیم از فضاهای نامی که به صورت پیش فرض در دات نت نیستند و یا در سایر پروژه های دیگر قرار دارند نحوه استفاده از آنها متفاوت از روش ذکر شده بالا می باشد .
در صورتی که قصد استفاده از فضاهای نامی را دارید که در سایر پروزه های دیگر قرار دارد ابتدا می بایست Add reference را انتخاب و فضای نام مورد نظر را انتخاب کنید .
قصد داریم  در پروژه SimpleNamespace از فضای نام های موجود در پروژه FirstLib که از نوع Class Library می باشد استفاده کنیم ، برای اینکار ابتدا بر روی پروژه simpleNamespace کلیک راست و از منوی Add گزینه Reference را انتخاب کنید . در پنجره ظاهر شده تب projects را انتخاب و در قسمت سمت راست پروژه fistLib را انتخاب و دکمه ok را کلیک نمایید .با این کار اسمبلی پروژه فوق به لیست reference های پروژه اضافه خواهد شد .
حال به قسمت کد نویسی Form رفته و برای دسترسی به کلاس های موجود در FirstLib ابتدا با استفاده از using فضای نام مربوطه را برای استفاده  به پروژه اضافه نمایید .

و برای استفاده از کلاس های موجود در فضا نام های فوق به صورت زیر عمل خواهیم کرد :

در صورتی که فضاهای نام را با استفاده از using به Form1 اضافه نمی کردیم می بایست هر بار اسم فضای نام مورد نظر را برای استفاده از کلاس های مورد نظر قرار می دادیم به صورت زیر :

برای تکمیل شدن بحث مثالی هم از فضا نام های تو در تو بیان میکنیم که به چه صورت مورد استفاده قرار میگیرند .
در فضای نام FirstLib موجود در FistLib Library یک فضا نام جدید به اسم StringSpace که دارای یک کلاس به اسم stringClass می باشد به صورت زیر اضافه کنید :

حال در Form1.cs برای دسترسی به کلاس StringClass به یکی از دو روش زیر عمل خواهیم کرد :
1:

2:
افزودن  فضای نام :

 و جهت استفاده از کلاس :

در زمان افرزودن فضا های نام با استفاده از کلمه using به این نکته توجه داشته باشید که این سلسله مراتب همیشه به اسم فضای نام خاتمه می یابد به جز در زمان معرفی نام های مستعار برای کلاس ها .

اشتراک گذاری:

مطالب زیر را حتما مطالعه کنید

دیدگاهتان را بنویسید

keyboard_arrow_up