이 질문은 C#, Compact Framework 2 및 Windows CE 5 장치에 적용됩니다.C# string.IndexOf()에서 예기치 않은 값을 반환합니다.
문제가 보이지 않으면 서 수년 동안 매우 다른 CE 장치에서 사용 된 .net DLL에 버그가 발생했습니다. 그러나이 같이 IndexOf 갑자기 5.
을 반환 오늘날까지 단 사실,string s = "Print revenue receipt"; // has only single space chars
int i = s.IndexOf(" "); // two space chars
내가 -1 것으로 예상 : 갑자기, 새 Windows CE 5.0 장치에이 버그는 다음 코드 등장
int i = s.IndexOf(" ", StringComparison.Ordinal);
를 사용하는 경우이 문제가 발생하지 않기 때문에, 나는이 문화를 기반으로 한 현상이라고 확신 해요,하지만 난이 새로운 장치는 수의 차이를 인식 할 수 없습니다. 그것은 알려진 장치의 거의 동일한 버전입니다 (단지 더 빠른 CPU 및 새 보드).
두 디바이스 : 동일한 현지화와
- 실행 윈도우 CE 5.0
- System.Environment.Version 보고서 '2.0.7045.0'
- CultureInfo.CurrentUICulture 및 CultureInfo.CurrentCulture 보고서 'EN-GB' ('de-DE'로도 테스트 됨)
- 'all'관련 레지스트리 키가 동일합니다.
새 장치에는 설명 된 동작을 변경하지 않고 GAC 파일의 이름을 실험적으로 변경 한 CF 3.5가 사전 설치되어 있습니다. 런타임에는 항상 버전 2.0.7045.0이보고되기 때문에 이러한 어셈블리가 아무 효과가 없다고 가정합니다.
수정하기가 어렵지 않지만, 마술처럼 보일 때 나는 참을 수 없습니다. 내가 누락 된 어떤 힌트라도?
편집 : 이
하나 더 :
이 _exact_ 코드를 실행하면 5가됩니까? –
정확히는 아닙니다. 위의 스크린 샷을 참조하십시오. 나는 또한 질문을 바로 잡았다. 흥미로운 점 : * s = "수익 인쇄"; // result -1 * s = "Drucke Beleg aus"; // result -1 (!) pls는 내가 자주 편집하는 것을 용서합니다. –
http://i.stack.imgur.com/iGxNb.png –