2014-11-18 2 views
1

봐는 : 전달코드 실행이 'if'문에서 어떻게 이루어 졌습니까? 다음 코드에서

public static string GetCleanURL(string baseURL, string url) 
    { 
     string cleanUrl = url.ToLower(); 
     if (cleanUrl.StartsWith("http://")) 
     {//It already starts with http:// It is already in the correct form return it. 
      return cleanUrl; 
     } 

'URL'값은 "123.123.123.123:1234/myurl/withstuff.xml"입니다. 'if'문에서 'cleanUrl'의 값은 "123.123.123.123:1234/myurl/withstuff.xml"입니다. 그러나 어떤 이유로 코드 실행은 if 블록 내부로 들어가고 'return cleanUrl; 실행됩니다. 내 디버거의 '직접 실행 창'에 cleanUrl.StartsWith("http://")를 연결하면

enter image description here

는, false를 반환 : 여기

은 'cleanUrl'에 대한 현재 값의 스크린 샷이다. 어느 것이 내가 기대할 것입니다. 그러나 실행은 어떻게 든 true로 반환 된 것처럼 if 블록으로 이동합니다.

아무도이 방법에 대해 설명해주십시오.

답변

2

가 해결 기록!

이 점에 대해 도움을 주신 분께 감사드립니다.

코드베이스와 디버그 작업이 실제로 동기화되기 전에 내 프로젝트를 정리하고 다시 빌드하고 Visual Studio 2013을 닫고 다시 열어 약 12 ​​번을 실행해야했습니다. 이제 제대로 작동하는 것 같습니다.

이유가 확실하지 않은 이유 또는 정리/정리를 여러 번 수행해야하는 이유가 확실하지 않은 경우입니다. 하지만 지금은 효과가 있습니다.

그럼, 친구라면 코드가 미친 듯 행동하고해야 할 일을하지 않는 것입니다. 올바른 생각을 가진 사람이 프로그래머가 될 수 없다는 것을 깨달으십시오. 그런 다음 몇 번 청소/재건하고 기이 한 일이 결코 돌아 오지 않도록기도하십시오.

감사합니다. 내가 개발 도구와 싸우고 LOVE

은 ...

+0

나는 이것을 "풀다"라고 부르지 않을 것이다. 왜 그런 일이 일어 났는지, 어떤 것을 고쳤는지 알지 못한다. 너는 그것을 단지 다시 켜고 끄고 껐다. 껐다가 다시 켜십시오. 내 생각 엔 최적화 기능이 켜져있어 디버거에서 강조 표시된 행이 정확하지 않은 것 같습니다. 시체가 달렸는지 여부에 대한 황금 표준은 그 시체에 무언가를 인쇄하고 인쇄 된 것을 보는 것입니다. –

+0

유닛 테스트를하고 있었고 코드를 업데이트 한 다음 테스트 하네스를 클릭하고 테스트를 실행했다고 추측합니다. 내 가정은 Visual Studio에서 소스 코드와 일치하도록 디버그 정보를 완전히 업데이트하지 않았다는 것입니다. 부부가 청소하고 재건 한 후에는 괜찮을 것 같습니다. 코드가 꽤 힘들어서 다른 무엇이 될지 모르겠습니다. 다른 아이디어가 있으면 알려주십시오. 나는 모든 일에 꽤 당황 스러웠다. 나는 더 이상 그것을하지 않기 때문에 기쁘다. .. – Curtis

1

아니요, StartWith은 버그가 없으며 예상대로 작동합니다.

아래의 최소 코드를 사용해보십시오. 문제를 재발견하기 위해 코드를 최소한으로 줄이십시오. 이런 일이 매번 발생합니까? 둘 이상의 후보 문자열에서 발생합니까? 아니면 그 문자열 만? 다른

뭔가 죄송 벌어지고, 다음 Doesn't start

static void Main(string[] args) 
    { 
     string cleanUrl = "123.123.123.123:1234/SomeFile.xml"; 
     if (cleanUrl.StartsWith("http://")) 
      Console.WriteLine("Starts"); 
     else 
      Console.WriteLine("Doesn't start"); 
     Console.ReadLine(); 
    } 
+6

사람은 당신에게 와서 그 문제가 말한다, 대신 그것을 해결 당신은 그 문제가되지 않는다는 것을 말해. – SimpleVar

+4

실제로 그는 인식 된 문제가 실제 문제가 아니라고 말합니다. – TaW

+0

"123.12 ..."는 "http : //"로 시작하지 않으며 문제는 실제로 다른 곳에서 볼 수 있으므로이 대답은 불필요한 것처럼 보입니다. – Magnus

관련 문제