Đó là vấn đề tối ưu hóa mức tiêu thụ bộ nhớ và tối ưu hóa so sánh chuỗi. Mỗi khi bạn sử dụng một chuỗi trống trong ứng dụng của mình, bạn sẽ phân bổ một đối tượng chuỗi chứa 0 ký tự. Đối với so sánh chuỗi, nó có thể được thực hiện bằng cách so sánh các tham chiếu (con trỏ) thay vì ký tự theo từng ký tự, nhanh hơn ngay cả đối với các chuỗi trống.
Nếu bạn đang sử dụng nhiều lần cùng một chuỗi trong ứng dụng của mình, bạn có thể sử dụng cùng loại cơ chế bằng cách gọi String.I INTERN () với chuỗi của bạn. Nhưng nếu bạn chỉ sử dụng mỗi chuỗi một lần, thì bạn sẽ chỉ sử dụng thêm bộ nhớ.
Vì vậy, String.Empty chỉ là một tối ưu hóa trường hợp đặc biệt đáng để thực hiện đối với hầu hết các ứng dụng .Net, đó là lý do tại sao nó được tích hợp trong BCL.
Để biết thêm chi tiết về chủ đề này, tôi thực sự khuyên bạn nên đọc bài đăng trên blog của Eric Lippert .
Bạn cũng nên xem tài liệu này được tham khảo bởi bài viết trên blog của anh ấy.