Sự hạn chế của static trong C#

Sự hạn chế của static, chính là sự hạn chế của lập trình hướng thủ tục, đây là lí do tại sao các kĩ sư sáng tạo ra lập trình hướng đối tượng.

Ví dụ:

Tạo một lớp Xe, có một thuộc tính static là biển số xe.

class Xe
{
    public static string BienSo { get; set; }
}

Trong class Program ta thêm vào đoạn code sau.

static void Main(string[] args)
{
    Xe.BienSo = "1";
    XeChay2();
    XeChay1();
    Console.ReadLine();
}

public static void XeChay1()
{
    Console.WriteLine("Bien so xe la " + Xe.BienSo);
}

public static void XeChay2()
{
    Xe.BienSo = "2";
    Console.WriteLine("Xe Chay 2");
}

Phân tích ví dụ:

Bước 1: tạo lớp xe với một thuộc tính static là BienSo

Bước 2: trong class Program ta tạo 2 hàm là XeChay1 và XeChay2.

Bước 3: Trong hàm Main ta gán giá trị cho biển số xe là 1

Bước 4: ta chạy hàm XeChay2

Bước 5: ta chạy hàm xe chạy 1

Kết quả:

sự hạn chế của lập trình hướng thủ tục

Như ta thấy, vì trong hàm XeChay2, ta có gán giá trij lại cho thuộc tính static Biển Số, nên trong hàm XeChay1 kết quả in ra sẽ là Biển số xe la 2, bất chấp ở câu lệnh đầu tiên ta đã gán biển số xe là 1.

Nếu quá lạm dụng static, ta sẽ tập trung quá nhiều đến việc sử dụng dữ liệu như lập trình hướng thủ tục. do đó ta sẽ bỏ qua sự thay đổi dữ liệu. Nên khi chương trình có sự thay đổi dữ liệu sẽ rất khó kiểm soát.

Khi cần có sự thay đổi dữ liệu ta sử dụng các đối tượng(object), mỗi đối tượng sẽ chứa dữ liệu của riêng mình, nếu một đối tượng cùng một lớp thay đổi dữ liệu sẽ không ảnh hướng đến đối tượng khác. 

Các môn học khác

Khoa học về dinh dưỡng, giáo trình giảm cân cho mọi người.

SQL là ngôn ngữ truy vấn mang tính cấu trúc, nó cho phép bạn truy cập và sử dụng database.

HTTP giúp kết nối các máy tính trên mạng Internet thông qua TCP/IP