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