Chúng khác nhau như những người khác đã trả lời.
static void Main(string[] args)
{
string s1 = null;
string s2 = string.Empty;
string s3 = "";
Console.WriteLine(s1 == s2);
Console.WriteLine(s1 == s3);
Console.WriteLine(s2 == s3);
}
results:
false - since null is different from string.empty
false - since null is different from ""
true - since "" is same as string.empty
Vấn đề với việc quản lý chuỗi rỗng so với chuỗi null đang trở thành vấn đề khi bạn cần duy trì nó thành một tệp phẳng hoặc chuyển nó thông qua liên lạc, Vì vậy, tôi thấy nó có thể hữu ích cho những người truy cập trang này để đưa ra một giải pháp tốt cho vấn đề cụ thể đó.
Với mục đích lưu chuỗi thành tệp hoặc thông tin liên lạc:
bạn có thể muốn chuyển đổi chuỗi thành byte.
một phương pháp hay mà tôi khuyên bạn nên thêm là thêm 2 phân đoạn byte tiêu đề vào chuỗi đã chuyển đổi của bạn.
phân đoạn 1 - thông tin meta được lưu trữ trong 1 byte và mô tả độ dài của phân đoạn tiếp theo.
phân đoạn 2 - giữ độ dài của chuỗi được lưu.
ví dụ:
string "abcd" - để đơn giản hóa, tôi sẽ chuyển đổi nó bằng cách sử dụng bộ mã hóa ASCII và sẽ nhận được {65,66,67,68}.
tính toán phân đoạn 2 sẽ cho kết quả 4 - vì vậy 4 byte là độ dài của chuỗi được chuyển đổi.
tính toán phân đoạn 1 sẽ mang lại kết quả 1 - vì chỉ 1 byte được sử dụng để giữ thông tin độ dài của thông tin chuỗi được chuyển đổi (là 4, tức là nếu nó là 260, tôi sẽ nhận được 2)
Dải byte mới bây giờ sẽ là {1,4,65,66,67,68} có thể được lưu vào một tệp.
Lợi ích liên quan đến chủ đề là nếu tôi có một chuỗi trống để lưu, tôi sẽ nhận được từ chuyển đổi một mảng byte trống có độ dài bằng 0 và sau khi tính toán các phân đoạn, tôi sẽ có {1,0} có thể là được lưu và sau đó được tải và diễn giải lại thành một chuỗi trống. Mặt khác, nếu tôi có giá trị null trong chuỗi của mình, tôi sẽ chỉ có {0} làm mảng byte của tôi để lưu và một lần nữa khi được tải có thể được diễn giải trở lại null.
Có nhiều lợi ích hơn như biết kích thước được tải hoặc tích lũy nếu bạn ghép nhiều chuỗi.
Quay lại chủ đề - nó sẽ .. loại ô nhiễm ngăn xếp vì các nguyên tắc tương tự được mô tả đang được sử dụng bởi bất kỳ hệ thống nào để phân biệt null với rỗng .. vì vậy có chuỗi. Empty chiếm nhiều bộ nhớ hơn null, mặc dù tôi sẽ không gọi nó là ô nhiễm .. nó chỉ là 1 byte nữa.