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

คลาสซ้อน (Nested Classes) ใน C#

คลาสซ้อน (Nested Class) คือ คลาสที่ประกาศอยู่ภายในคลาสอื่น (Enclosing Class) เป็นสมาชิกของคลาสที่ครอบคลุม และสามารถเข้าถึงสมาชิก private ของคลาสภายนอกได้ ในขณะที่คลาสภายนอก ไม่สามารถ เข้าถึงสมาชิก private ของคลาสซ้อนได้

ตัวอย่างโค้ด

class One
{
    public int num1;
    
    public class Two
    {
        public int num2;
    }
}

class Demo
{
    static void Main()
    {
        One a = new One();
        a.num1++;
        
        One.Two ab = new One.Two();
        ab.num2++;
    }
}

คำอธิบาย

  • class Two ประกาศอยู่ภายใน class One จึงเป็น Nested Class
  • เข้าถึงจากภายนอกผ่าน One.Two (รูปแบบ OuterClass.NestedClass)
  • หาก Nested Class เป็น public จะเข้าถึงได้จากทุกที่ หากเป็น private จะเข้าถึงได้เฉพาะในคลาสภายนอกเท่านั้น

ประโยชน์ของ Nested Classes

  • Encapsulation: จัดกลุ่มคลาสที่เกี่ยวข้องไว้ด้วยกัน
  • เข้าถึง Private Members: Nested class เข้าถึง private members ของ outer class ได้
  • Readability: แสดงความสัมพันธ์ที่ใกล้ชิดระหว่างคลาส

หมายเหตุ: ต่างจาก Inner Class ใน Java ที่มี reference ไปยัง outer class instance โดยอัตโนมัติ ใน C# Nested Class ไม่มี reference ไปยัง outer instance หากต้องการเข้าถึง instance ต้องส่งผ่าน Constructor หรือ Parameter