Menu
CoddyTech

Từ khóa this

Thuộc phần Lập trình hướng đối tượng trong hành trình C# của Coddy. Bài học 4 trên 70.

Từ khóa this dùng để chỉ instance hiện tại của một lớp. Từ khóa này được dùng để truy cập các thành viên của instance và phân biệt giữa tham số với trường có cùng tên.

Dùng this để phân biệt các trường với các tham số

public class Person
{
    private string name;
    private int age;
    
    public Person(string name, int age)
    {
        this.name = name;
        this.age = age;
    }
}

Nếu không có this, tham số sẽ che khuất trường

// Đoạn code này sẽ không hoạt động như mong đợi
public Person(string name, int age)
{
    name = name;  // Gán tham số (parameter) cho chính nó!
    age = age;    // Gán tham số (parameter) cho chính nó!
}

Dùng this với các thuộc tính

public class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }
    
    public Product(string name, decimal price)
    {
        this.Name = name;
        this.Price = price;
    }
    
    public void DisplayInfo()
    {
        Console.WriteLine($"{this.Name}: ${this.Price}");
    }
}

Dùng this để gọi một hàm khởi tạo khác trong cùng lớp

public class Rectangle
{
    public int Width { get; set; }
    public int Height { get; set; }
    
    public Rectangle(int width, int height)
    {
        this.Width = width;
        this.Height = height;
    }
    
    // Hàm khởi tạo cho hình vuông
    public Rectangle(int size) : this(size, size)
    {
    }
}

Ví dụ sử dụng:

Rectangle rect = new Rectangle(5, 10);
Rectangle square = new Rectangle(5);  // Tạo hình vuông 5x5

Từ khóa this luôn chỉ đối tượng hiện tại. Từ khóa này đặc biệt hữu ích khi tên tham số trùng với tên trường hoặc thuộc tính, giúp code rõ ràng hơn và tránh lỗi.

challenge icon

Thử thách

Trung bình

Hoàn thiện lớp Product bằng cách thêm hàm khởi tạo, dùng từ khóa this để gán giá trị tham số cho các thuộc tính. Đồng thời triển khai phương thức GetDescription(), dùng this để truy cập các thuộc tính.

Phương thức GetDescription() cần trả về: "{Name} costs ${Price}"

Tự làm thử

using System;

class Program
{
    static void Main()
    {
        string name = Console.ReadLine();
        decimal price = decimal.Parse(Console.ReadLine());
        
        Product product = new Product(name, price);
        
        Console.WriteLine($"Product: {product.Name}");
        Console.WriteLine($"Price: ${product.Price}");
        Console.WriteLine(product.GetDescription());
    }
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch C# online