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

Namespaces ใน C# คืออะไร

Namespace ใช้จัดกลุ่ม Types (Classes, Structs, Interfaces, Enums, Delegates) เพื่อป้องกันชื่อซ้ำ และจัดระเบียบโค้ด

Syntax

namespace MyNamespace
{
    // Type Declarations
}

ตัวอย่าง: หลาย Namespace ชื่อ Class ซ้ำกันได้

using System;

namespace FirstSpace
{
    public class MyClass
    {
        public void Func() => Console.WriteLine("Inside FirstSpace");
    }
}

namespace SecondSpace
{
    public class MyClass
    {
        public void Func() => Console.WriteLine("Inside SecondSpace");
    }
}

class TestClass
{
    static void Main()
    {
        // ใช้ Fully Qualified Name
        FirstSpace.MyClass fc = new FirstSpace.MyClass();
        SecondSpace.MyClass sc = new SecondSpace.MyClass();
        
        fc.Func(); // Inside FirstSpace
        sc.Func(); // Inside SecondSpace
        
        // หรือใช้ using Directive
        // using FirstSpace;
        // var fc = new MyClass();
    }
}

ผลลัพธ์

Inside FirstSpace
Inside SecondSpace

Nested Namespaces

namespace Company.Project.Module
{
    // หรือ
    namespace Company
    {
        namespace Project
        {
            namespace Module { }
        }
    }
}

using Directives

  • using System; - Import Namespace
  • using static System.Console; - Import Static Members (C# 6+)
  • using Alias = Namespace.Type; - Alias สำหรับชื่อซ้ำ

Global Namespace

// ระบุ Global Namespace โดยเฉพาะ
global::System.Console.WriteLine("Global");

Best Practices

  • Company.Product.Module (เช่น MyCompany.MyApp.Models)
  • 1 Namespace ต่อไฟล์ (โดยทั่วไป)
  • หลีกเลี่ยง Namespace ซ้อนลึกเกิน 3-4 ระดับ
  • ใช้ using อยู่บนสุดไฟล์