C # - เนมสเปซ

namespaceได้รับการออกแบบมาเพื่อจัดเตรียมวิธีการแยกชื่อชุดหนึ่งจากชื่ออื่น ชื่อคลาสที่ประกาศในเนมสเปซหนึ่งจะไม่ขัดแย้งกับชื่อคลาสเดียวกันที่ประกาศในอีกชื่อหนึ่ง

การกำหนดเนมสเปซ

นิยามเนมสเปซเริ่มต้นด้วยคีย์เวิร์ด 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คีย์เวิร์ดระบุว่าโปรแกรมใช้ชื่อในเนมสเปซที่กำหนด ตัวอย่างเช่นเรากำลังใช้ไฟล์Systemเนมสเปซในโปรแกรมของเรา คลาส Console ถูกกำหนดไว้ที่นั่น เราแค่เขียน -

Console.WriteLine ("Hello there");

เราสามารถเขียนชื่อที่มีคุณสมบัติครบถ้วนเป็น -

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

คุณยังสามารถหลีกเลี่ยงการเติมเนมสเปซล่วงหน้าด้วยนามสกุล 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