Default Constructor ใน C#
Default Constructor คือ Constructor ที่ไม่มีพารามิเตอร์ เรียกอัตโนมัติเมื่อสร้างอ็อบเจกต์ด้วย new ClassName()
ลักษณะเฉพาะ
- ไม่มีพารามิเตอร์:
public ClassName() { } - ถ้าไม่เขียน Constructor ใดๆ Compiler จะสร้าง Default Constructor ให้อัตโนมัติ (Implicit)
- ถ้าเขียน Constructor ที่มีพารามิเตอร์แล้ว จะไม่มี Default Constructor อัตโนมัติ ต้องเขียนเองถ้าต้องการ
ตัวอย่าง: Default Constructor แบบ Explicit
using System;
public class Department
{
public Department()
{
Console.WriteLine("Constructor Invoked");
}
public static void Main(string[] args)
{
Department dept1 = new Department(); // เรียก Default Constructor
}
}
ผลลัพธ์
Constructor Invoked
ตัวอย่าง: Implicit vs Explicit
// ไม่มี Constructor -> Compiler สร้าง Default ให้
class A { }
var a = new A(); // OK
// มี Parameterized Constructor -> ไม่มี Default อัตโนมัติ
class B
{
public B(int x) { }
}
var b = new B(); // Compile Error! ไม่มี Default Constructor
var b2 = new B(10); // OK
Static Constructor (คอนสตรัคเตอร์สแตติก)
- เรียกครั้งเดียวก่อน Static Member แรกถูกเข้าถึง
- ไม่มี Access Modifier, ไม่มี Parameter
- ใช้ Initialize Static Fields
class Config
{
public static string ConnectionString;
static Config() // Static Constructor
{
ConnectionString = LoadFromConfigFile();
}
}
Constructor Chaining (this/base)
class Employee
{
public string Name { get; }
public int Id { get; }
// Primary Constructor
public Employee(int id, string name)
{
Id = id; Name = name;
}
// Chaining to Primary
public Employee(int id) : this(id, "Unknown") {}
public Employee() : this(0, "Unknown") {}
}