سه شنبه ۱۸ دي ۱۴۰۳
Tut24 آموزش برنامه نویسی و مجله تخصصی فناوری ورود/عضویت

آموزش سی شارپ - فضاهای نام

یک فضای نام برای ارائه روشی برای تفکیک یک مجموعه از نام‌ها از مجموعه‌ای دیگر طراحی شده است. نام‌های کلاسی که در یک فضای نام تعریف می‌شوند، با نام‌های کلاسی که در فضای نام دیگری تعریف شده‌اند، تداخل ندارند.

تعریف یک فضای نام

تعریف یک فضای نام با کلمه کلیدی namespace شروع می‌شود و پس از آن نام فضای نام به شکل زیر قرار می‌گیرد:

namespace namespace_name {
   // code declarations
}

برای فراخوانی نسخه فعال شده با فضای نام تابع یا متغیر، نام فضای نام را به صورت زیر اضافه کنید -

namespace_name.item_name;

برنامه زیر استفاده از فضاهای نام - را نشان می دهد

using System;

namespace first_space {
   class namespace_cl {
      public void func() {
         Console.WriteLine("Inside first_space");
      }
   }
}
namespace second_space {
   class namespace_cl {
      public void func() {
         Console.WriteLine("Inside second_space");
      }
   }
}
class TestClass {
   static void Main(string[] args) {
      first_space.namespace_cl fc = new first_space.namespace_cl();
      second_space.namespace_cl sc = new second_space.namespace_cl();
      fc.func();
      sc.func();
      Console.ReadKey();
   }
}

هنگامی که کد بالا کامپایل و اجرا می شود، نتیجه زیر را ایجاد می کند -

Inside first_space
Inside second_space

کلمه کلیدی using

کلمه کلیدی using بیان می‌کند که برنامه از فضای نام داده شده استفاده می‌کند. به عنوان مثال، ما در برنامه‌های خود از فضای نام System استفاده می‌کنیم. کلاس Console در آنجا تعریف شده است. ما فقط می‌نویسیم:

Console.WriteLine ("Hello there");

می توانستیم نام کاملاً واجد شرایط را به صورت − بنویسیم

System.Console.WriteLine("Hello there");

شما همچنین می‌توانید از دستور دسته‌بندی فضای نام‌ها با استفاده از دستور فضای نام using صرف‌نظر کنید. این دستور به کامپایلر می‌گوید که کد بعدی از نام‌ها در فضای نام مشخص شده استفاده می‌کند:

بیایید مثال قبلی خود را با دستور using دوباره بنویسیم:

using System;
using first_space;
using second_space;

namespace first_space {
   class abc {
      public void func() {
         Console.WriteLine("Inside first_space");
      }
   }
}
namespace second_space {
   class efg {
      public void func() {
         Console.WriteLine("Inside second_space");
      }
   }
}   
class TestClass {
   static void Main(string[] args) {
      abc fc = new abc();
      efg sc = new efg();
      fc.func();
      sc.func();
      Console.ReadKey();
   }
}

هنگامی که کد بالا کامپایل و اجرا می شود، نتیجه زیر را ایجاد می کند -

Inside first_space
Inside second_space

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

می‌توانید یک فضای نام را در داخل یک فضای نام دیگر تعریف کنید به شکل زیر:

namespace namespace_name1 {
   
   // code declarations
   namespace namespace_name2 {
      // code declarations
   }
}

شما می توانید با استفاده از عملگر نقطه (.) به صورت زیر به اعضای فضای نام تودرتو دسترسی داشته باشید

using System;
using first_space;
using first_space.second_space;

namespace first_space {
   class abc {
      public void func() {
         Console.WriteLine("Inside first_space");
      }
   }
   namespace second_space {
      class efg {
         public void func() {
            Console.WriteLine("Inside second_space");
         }
      }
   }   
}
class TestClass {
   static void Main(string[] args) {
      abc fc = new abc();
      efg sc = new efg();
      fc.func();
      sc.func();
      Console.ReadKey();
   }
}

هنگامی که کد بالا کامپایل و اجرا می شود، نتیجه زیر را ایجاد می کند -

Inside first_space
Inside second_space