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 Namespaceusing 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อยู่บนสุดไฟล์