Lập trình C#

Khởi tạo đối tượng (Object Initializer C#3.0)

Khởi tạo đối tượng (Object Initializer C#3.0)
Được viết bởi Minh Hoàng

Series lập trình C#, ngôn ngữ lập trình hiện đại và mạnh mẽ.

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();
		}
	}
}
Output:

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();
		}
	}
}
Output:

FirstName: Minh, LastName: Hoang, Id: 0
FirstName: Minh, LastName: Hoang, Id: 0
FirstName: , LastName: , Id: 86
FirstName: Minh, LastName: Hoang, Id: 2017

Cảm ơn bạn đã theo dõi. Đừng ngần ngại hãy cùng thảo luận với chúng tôi!

Giới thiệu

Minh Hoàng

Xin chào, tôi là Hoàng Ngọc Minh, hiện đang làm BrSE, tại công ty Toyota, Nhật Bản. Những gì tôi viết trên blog này là những trải nghiệm thực tế tôi đã đúc rút ra được trong cuộc sống, quá trình học tập và làm việc. Các bài viết được biên tập một cách chi tiết, linh hoạt để giúp bạn đọc có thể tiếp cận một cách dễ dàng nhất. Hi vọng nó sẽ có ích hoặc mang lại một góc nhìn khác cho bạn[...]

2 bình luận

Translate »