Tôi đang cố gắng hiểu tại sao string.Empty
là readonly
chứ không phải là const
. Tôi đã xem this Bài đăng nhưng tôi không hiểu nhận xét mà Microsoft đã viết về nó. Như Jon Skeet wrote trong một nhận xét "Tôi không biết - nó không có ý nghĩa với tôi, phải trung thực ..."Có nghĩa là gây nhầm lẫn nhận xét ở trên "string.Empty" trong nguồn .NET/BCL?
Shared Source Common Language Infrastructure 2.0 Release. string.cs là trong sscli20 \ clr \ src \ bcl \ system \ string.cs
// The Empty constant holds the empty string value.
//We need to call the String constructor so that the compiler doesn't mark this as a literal.
//Marking this as a literal would mean that it doesn't show up as a field which we can access
//from native.
public static readonly String Empty = "";
Tôi không thể nhìn thấy ở đây bất kỳ cuộc gọi constructor String và hơn nữa, nó đánh dấu là đen - ""
Có thể ai đó vui lòng giải thích cho tôi bằng văn bản thuần túy, Ý kiến có ý nghĩa gì và tại sao là string.Empty
readonly
chứ không phải là const
?
Cập nhật:
Eric Lippert nhận xét về bởi bây giờ là một deleted answer:
tôi hỏi một trong những C# cũ giờ trong bữa ăn trưa về vấn đề này và anh ta đã không nhớ cụ thể tại sao quyết định này là thực hiện, nhưng phỏng đoán rằng nó có liên quan đến việc thực tập.
Có lẽ đó là một trong những nhận xét có ý nghĩa tại một thời điểm, nhưng sau đó mã đã được thay đổi và nó không còn có ý nghĩa ... không phải là tôi đã từng làm điều đó hay bất cứ điều gì ... * còi khi anh bước đi * –
"Tại sao nó không phải là một const" - bởi vì sau đó bạn không thể vui chơi làm 'typeof (string) .GetField (" Empty "). SetValue (null, null);' hoặc 'typeof (string) .GetField ("Trống") SetValue (null, ""); '- mwahahah; mwaaaahahahahahahhh; MWWWWAAAAAHAHAHAHAHAHH! –
@MarcGravell, Eric Lippert ở đâu khi cần thiết. "Giúp tôi siêu nhân ..." – gdoron