Khởi tạo đối tượng (Object Initializer) cho phép bạn gán giá trị cho bất kỳ trường (field) hoặc thuộc tính (property) nào có thể truy cập được của đối tượng tại thời điểm khởi tạo, mà không cần phải tạo đối tượng rồi mới thực hiện lệnh gán giá trị cho field/property. Cú pháp khởi tạo đối tượng cho phép bạn chỉ định các đối số cho hàm tạo (constructor) hoặc bỏ qua các đối số.
Ví dụ 1/2:
using System; namespace MinhHoangBlog { class Person { // Fields private int m_id; public string m_address; // Auto-Implemented Properties public string m_name { get; set; } public int m_age { get; set; } // Constructor public Person(int inId) { m_id = inId; } public override string ToString() { return string.Format("id = {0}, name = {1}, address = {2}, age = {3}", m_id, m_name, m_address, m_age); } } class Program { static void Main(string[] args) { // Khởi tạo đối tượng person1 và giá trị // theo cách trước C# 3.0 var person1 = new Person(1); person1.m_name = "Minh Hoàng Blog"; person1.m_address = "minhhn.com"; person1.m_age = 20; // Khởi tạo đối tượng person2 và giá trị // bằng tính năng Object Initializer của C#3.0 var person2 = new Person(2) { m_name = "Nam Anh", m_address = "Da Nang", m_age = 2 }; Console.ReadKey(); } } }
person1 = {id = 1, name = Minh Hoàng Blog, address = minhhn.com, age = 20}
person2 = {id = 2, name = Nam Anh, address = Da Nang, age = 2}
Xem thêm: Các loại property trong C#.
Ví dụ 2/2:
using System; namespace MinhHoangBlog { public class Student { // Auto-Implemented Properties public string m_firstName { get; set; } public string m_lastName { get; set; } public int m_id { get; set; } // Constructor không tham số public Student() { } // Constructor 2 tham số public Student(string inFirst, string inLast) { m_firstName = inFirst; m_lastName = inLast; } public override string ToString() => "FirstName: " + m_firstName + ", LastName: " + m_lastName + ", Id: " + m_id; } class Program { static void Main(string[] args) { // Khai báo khởi tạo đối tượng student1 // bằng cách sử dụng constructor 2 tham số. Student student1 = new Student("Minh", "Hoàng"); // Khai báo khởi tạo đối tượng student2 // bằng cách sử dụng constructor không tham số + Initialize Object // cho 2 properties: m_firstName, m_lastName Student student2 = new Student { m_firstName = "Minh", m_lastName = "Hoàng", }; // Khai báo khởi tạo đối tượng student3 // bằng cách sử dụng constructor không tham số + Initialize Object // cho 2 properties: m_id Student student3 = new Student { m_id = 86 }; // Khai báo khởi tạo đối tượng student4 // bằng cách sử dụng constructor không tham số + Initialize Object // cho 2 properties: m_firstName, m_lastName, m_id Student student4 = new Student { m_firstName = "Minh", m_lastName = "Hoàng", m_id = 2017 }; Console.WriteLine(student1.ToString()); Console.WriteLine(student2.ToString()); Console.WriteLine(student3.ToString()); Console.WriteLine(student4.ToString()); Console.ReadKey(); } } }
FirstName: Minh, LastName: Hoang, Id: 0
FirstName: Minh, LastName: Hoang, Id: 0
FirstName: , LastName: , Id: 86
FirstName: Minh, LastName: Hoang, Id: 2017
[…] Khởi tạo collection (Collection Initializer) cho phép bạn chỉ định một hoặc nhiều bộ khởi tạo phần tử khi bạn khởi tạo một loại collection thực hiện IEnumerable và có Add thêm một instance method hoặc một extension method. Bộ khởi tạo phần tử của một collection có thể là một giá trị đơn giản, biểu thức hoặc cũng có thể là một object initializer. […]
[…] Lập trình C# […]