2011-11-30 33 views
5

Đây là loại câu hỏi của người mới bắt đầu nhưng mã tôi đang xem đang được sản xuất và tôi không muốn phá vỡ bất kỳ điều gì. Vì vậy, chỉ trong trường hợp: không phải làchiều dài đế

text.Substring(index, length).Length 

tương đương với chỉ length?

(Ngoại trừ khả năng ArgumentOutOfRangeException.)

+1

Không giảm giá trị của ngoại lệ. –

+0

Đây không phải là trong thử. Tôi đoán có một giả định trong phạm vi sẽ không bao giờ xảy ra. – Nickolodeon

+0

Đặt nó trong một khối thử sẽ phá hủy giá trị. Giả định không phải là nó không bao giờ xảy ra, nó là nó không thể gây rắc rối nếu nó xảy ra. –

Trả lời

6

Có, nó sẽ giống hệt nhau.

+0

Tôi luôn luôn quá chậm: ( –

+0

Ngón tay của tôi giống như tia chớp hôm nay:] – Polynomial

+0

Tôi vừa nhận được bình luận ở khắp mọi nơi. bên :-) – dash

1

Có vẻ như nó với tôi. Tôi không thể thấy lý do nào để viết nó như thế.

+0

Lời giải thích duy nhất tôi đã tìm ra cho bản thân mình là tác giả (mặc dù là một kinh nghiệm) đến từ nền C++. Họ có thể đã có vấn đề với mã hóa multibyte và do đó tránh tính toán thủ công. – Nickolodeon

+0

@Nickolodeon - Ngay cả trong trường hợp đó, nó không có ý nghĩa gì cả. 'Chuỗi con' và' Độ dài' hoạt động trên một số ký tự *, không phải là số * byte *. Multibyte sẽ không có tác dụng ở đây, và tôi không thể nhìn thấy một tình huống mà nó sẽ trong một trường hợp tương tự trong C + + hoặc. – Polynomial

+0

Tôi chỉ vaguealy nhớ rằng chuỗi trong C + + thực sự là một char []. char lần lượt (ít nhất, từng là) một byte. – Nickolodeon

0

Hãy xem những gì mà thực sự có nghĩa là với một số con số:

"chuỗi thử nghiệm groovy của tôi" .Substring (0, 2) .Length == "My" .Length = 2

"thử nghiệm groovy My string ".Substring (4, 2) .Length ==" ro "= 2

Như bạn nói, nếu startIndex + Length> chiều dài của chuỗi hoặc startIndex không nằm trong chuỗi thì ArgumentOutOfRangeException bị ném

Vì vậy, có, vì tất cả các trường hợp tiềm ẩn khác đều ném ngoại lệ.

Nghi ngờ của tôi là tác giả không biết rằng trường hợp cạnh (khi startIndex + length> end of string) ném một ngoại lệ.

+0

Trong chỉ số trường hợp của chúng tôi luôn là> = 0 và tôi đã thêm một dấu kiểm ở đầu chuỗi đó không trống. – Nickolodeon

Các vấn đề liên quan