Câu hỏi này áp dụng cho các thiết bị C#,. Compact Compact Framework 2 và Windows CE 5.C# string.IndexOf() trả về giá trị không mong muốn
Tôi gặp lỗi trong một .net DLL được sử dụng trên các thiết bị CE rất khác nhau trong nhiều năm, mà không hiển thị bất kỳ vấn đề nào. Đột nhiên, trên một mới Windows CE 5.0 thiết bị, lỗi này xuất hiện trong đoạn mã sau:
string s = "Print revenue receipt"; // has only single space chars
int i = s.IndexOf(" "); // two space chars
Tôi hy vọng tôi là -1, tuy nhiên điều này chỉ đúng cho đến ngày hôm nay, khi indexOf đột nhiên trở lại 5.
Kể từ khi hành vi này không xảy ra khi sử dụng
int i = s.IndexOf(" ", StringComparison.Ordinal);
, tôi khá chắc chắn rằng đây là một phenomenom văn hóa dựa, nhưng tôi không thể nhận ra sự khác biệt thiết bị mới này làm cho. Nó là một phiên bản hầu như giống hệt nhau của một thiết bị được biết đến (chỉ là một cpu nhanh hơn và hội đồng quản trị mới).
Cả hai thiết bị:
- chạy Windows CE 5.0 với nội địa hóa giống hệt
- System.Environment.Version báo cáo '2.0.7045.0'
- CultureInfo.CurrentUICulture và báo cáo CultureInfo.CurrentCulture 'en-GB' (cũng được thử nghiệm với 'de-DE')
- 'tất cả' khóa đăng ký có liên quan bằng nhau.
Thiết bị mới có cài đặt trước CF 3.5, có tệp GAC mà tôi đã đổi tên thử nghiệm, không thay đổi hành vi được mô tả. Kể từ lúc chạy luôn luôn Phiên bản 2.0.7045.0 được báo cáo, tôi giả định các hội đồng này không có hiệu lực.
Mặc dù điều này không khó khắc phục, tôi không thể chịu nổi khi mọi thứ có vẻ huyền diệu. Bất kỳ gợi ý những gì tôi đã mất tích?
Edit: nó là nhận được người lạ và người lạ, xem ảnh chụp màn hình:
Một hơn:
bạn chạy mã _exact_ này và bạn nhận được 5? –
không chính xác tất nhiên, xem ảnh chụp màn hình của tôi ở trên. Tôi cũng sửa lại câu hỏi. Điểm thú vị: * s = "Doanh thu in"; // kết quả -1 * s = "Drucke Beleg aus"; // result -1 (!) xin lỗi lý do tôi thường xuyên chỉnh sửa, tôi mới tham gia SO. –
http://i.stack.imgur.com/iGxNb.png –