Object Initializer là cú pháp cho phép gán giá trị cho các thuộc tính/field của đối tượng ngay tại thời điểm tạo instance, sử dụng dấu ngoặc nhọn { }. Giúp code ngắn gọn, không cần gọi constructor có tham số hoặc gán từng dòng sau khi new.
Cú pháp
var obj = new MyClass { Prop1 = value1, Prop2 = value2, ... };
Ví dụ với lớp Employee
Employee empDetails = new Employee()
{
EID = 10,
EmpName = "Tim",
EmpDept = "Finance"
};
// Truy cập
Console.WriteLine(empDetails.EmpName); // "Tim"
Mã nguồn hoàn chỉnh
using System;
public class Demo
{
public static void Main()
{
Employee empDetails = new Employee()
{
EID = 10,
EmpName = "Tim",
EmpDept = "Finance"
};
Console.WriteLine(empDetails.EID);
Console.WriteLine(empDetails.EmpName);
Console.WriteLine(empDetails.EmpDept);
}
}
public class Employee
{
public int EID { get; set; }
public string EmpName { get; set; }
public string EmpDept { get; set; }
}
Kết quả
10
Tim
Finance
So sánh: Constructor vs Object Initializer
| Cách | Code | Ưu điểm |
|---|---|---|
| Constructor | new Employee(10, "Tim", "Finance") | Validate, bắt buộc field, immutable |
| Object Initializer | new Employee { EID=10, ... } | Linh hoạt, dễ đọc, optional properties |
Lưu ý
- Chỉ hoạt động với property/field có
setaccessible (public, internal). - Thứ tự gán không quan trọng.
- Có thể lồng nhau:
new Order { Customer = new Customer { Name = "A" } }. - Kết hợp với Collection Initializer:
new List.{ new Employee { Name = "A" } }