Hãy suy nghĩ theo cách này: LastIndexOf
là loại vô nghĩa với chuỗi rỗng. Bạn có thể nói chuỗi trống tồn tại tại mỗi chỉ số trong một chuỗi, giữa mỗi ký tự. Các documentation do đó cung cấp một câu trả lời dứt khoát cho những gì nên được trả lại:
Nếu giá trị là String.Empty, giá trị trả về là vị trí chỉ số cuối cùng trong trường hợp này.
Ít nhất trong trường hợp này, nó trả về chỉ số thực tế. Nếu nó trả về độ dài của chuỗi (biểu thị chỉ mục "sau" kết thúc, mà tôi tin là quan điểm của bạn), nó sẽ trả về kết quả cho một phương thức có tên là LastIndexOf
thậm chí không phải là chỉ mục.
Và đây là một cách khác để nhìn vào nó: Nếu tôi có điều này:
Dim index As Integer = str.LastIndexOf("")
... sau đó tôi sẽ có thể làm điều này:
Dim substr As String = str.Substring(index, "".Length)
... và nhận được ""
trở lại. Chắc chắn, khi LastIndexOf
trả về chỉ số cuối cùng trong chuỗi, nó hoạt động.
Nếu nó trả về độ dài
của chuỗi, tôi sẽ nhận được
ArgumentOutOfRangeException
.
Chỉnh sửa: Ồ, có vẻ như tôi đã sai ở đó. Hy vọng rằng điểm đầu tiên của tôi đủ mạnh cho chính mình;)
Nguồn
2011-01-10 14:10:49
Khái niệm của bạn về 'string.Empty' là gì? Nó là gì? – thecoop
Mọi thứ đều không có gì. Không có gì ở khắp mọi nơi. – BoltClock
Câu hỏi của tôi là tại sao có quá nhiều phiếu bầu cho một câu hỏi vô nghĩa như vậy? Tại sao chính xác có vấn đề là người ta biết nếu một chuỗi C# không hoặc không kết thúc bằng một chuỗi rỗng? Làm thế nào chính xác bạn sẽ sử dụng thông tin có giá trị như vậy? – Blake7