Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

เนมสเปซ (Namespace) ใน C# ตัวแทนของแพ็กเกจใน Java

ใน Java ใช้ แพ็กเกจ (Package) เพื่อจัดระเบียบคลาส ป้องกันชื่อซ้ำ และควบคุมการเข้าถึง ใน C# มีแนวคิดที่เทียบเท่าคือ เนมสเปซ (Namespace)

แพ็กเกจใน Java

แพ็กเกจช่วยให้:

  • ป้องกันการชนกันของชื่อคลาส (Naming conflicts)
  • ควบคุมระดับการเข้าถึง (Access control)
  • ค้นหาและจัดการคลาส อินเตอร์เฟซ Enum และ Annotation ได้ง่ายขึ้น

เนมสเปซใน C#

เนมสเปซให้วิธีแยกกลุ่มชื่อ (Identifiers) ให้แยกจากกัน ชื่อคลาสในเนมสเปซหนึ่งจะไม่ชนกับชื่อเดียวกันในเนมสเปซอื่น

การประกาศเนมสเปซ

namespace NamespaceName {
    // คลาส โครงสร้าง อินเตอร์เฟซ ฯลฯ
}

ตัวอย่างการใช้งาน

using System;

namespace first_space {
    class NamespaceClass {
        public void Func() {
            Console.WriteLine("Inside first_space");
        }
    }
}

namespace second_space {
    class NamespaceClass {
        public void Func() {
            Console.WriteLine("Inside second_space");
        }
    }
}

class TestClass {
    static void Main(string[] args) {
        first_space.NamespaceClass fc = new first_space.NamespaceClass();
        second_space.NamespaceClass sc = new second_space.NamespaceClass();
        fc.Func();
        sc.Func();
        Console.ReadKey();
    }
}

คำอธิบาย

  • คลาส NamespaceClass มีอยู่ในทั้ง first_space และ second_space แต่ไม่ชนกัน
  • ใช้ชื่อเต็ม (Fully qualified name) เช่น first_space.NamespaceClass เพื่ออ้างอิง
  • คีย์เวิร์ด using ช่วยลดความยาวของชื่อเมื่อใช้บ่อย

แนวทางปฏิบัติที่ดี

  • ตั้งชื่อเนมสเปซด้วย PascalCase (เช่น MyCompany.Project.Module)
  • จัดกลุ่มฟังก์ชันที่เกี่ยวข้องไว้ในเนมสเปซเดียวกัน
  • หลีกเลี่ยงเนมสเปซซ้อนกันลึกเกินไป