2013-12-23 7 views
2

나는 오랫동안 무슨 일이 일어나고 있는지 알아 내려고 노력했지만 아무 것도 발견하지 못했다. 다른 누군가가이 문제에 부딪쳤다.C# 축약 문자열 리터럴이 작동하지 않습니다. 매우 이상한 백 슬래시가 항상 두 번

나는 단순히 문자열로 경로를 하드 코딩하려고합니다. 쉬운 물건. 그럼 어떤 이유로

string fullPathSourceFile = @"c:\SQLSOURCE.txt"; 

내가 따옴표를 제거하고 실 거예요 작업 단일 백 슬래시로 평가하기 위해 모든 노력을했습니다 c:\\SQLSOURCE.txt

로 평가하고있다. 나는 심지어 Replace(@"\\", @"\") 시도했는데 아무런 영향을 미치지 않습니다. 누구든지 단일 코드를 평가해야 할 때 이중 백 슬래시를 강요하는 코드에 어떤 일이 벌어지고 있는지 알 수 있습니까? 이것은 나를 괴롭히는 것입니다. 그리고 그것은 너무 쉽습니다. 그러나 나에게 많은 좌절을 안겨줍니다. 내가 잘못하고 있었는지 내 그림을 도와 자신의 입력을위한 모든 사람에게

   using (StreamReader reader = new StreamReader(fullPathSourceFile)) 
       { 
        string line; 

        while ((line = reader.ReadLine()) != null) 
        { 
         sqlDBsource = line.ToString(); 
        } 

        reader.Close(); 
       } 

감사 :

나는 그 아래에있는 문자열 변수를 사용하고 있습니다. 디버거에서 문자열의 값을 볼 때 Visual Studio에서 혼란 스럽습니다. 따라서 사용자가 이스케이프를 입력하기 때문에 조사 식 창이나 변수 값 팝업의 이중 백 슬래시가 정상이며 실제로 있음을 의미하지는 않습니다. 두 개의 백 슬래시. 변수 위에 마우스를 갖다 놓거나 조사 식 창에서 마우스로 클릭하면 툴팁/창 오른쪽에있는 돋보기 아이콘을 클릭하면 이스케이프되지 않은 문자열이 콘솔에 인쇄됩니다. 실제 결과를 표시하는 또 다른 방법은 다음과 같습니다. Console.WriteLine (the_problem_string); 코드에 관한 문제는 게시물의 범위를 벗어나지 만 Visual Studio에서 보았던 결과의 혼란으로 인해 문자열이 문제의 원인이 아니라고 생각하게되었습니다.

+0

문제가 예상대로 작동하는 것 같습니다. – user1336827

+0

음 ... 그럼 문제가 뭐니? 귀하의 질문에 이중 백 슬래시가 표시되지 않습니다. – ohiodoug

+0

방금 ​​이중 백 슬래시를 표시하도록 편집했습니다. 마크 업은 그것을 숨기고있었습니다. –

답변

0

이것은 이상한 것입니다. 그래서 주석에 제안 된대로 축 어적을 제거하고 문자열에서 이중 백 슬래시를 사용할 때 효과가있었습니다. 어떤 이유로 코드가 축 어적 문자열을 좋아하지 않고 백 슬래시를 잘못 번역했습니다. 이 문제가 해결되었습니다. 어떤 사람이 이것을 실행하면 어떤 상황에서는 컴파일러가 비 그대로를 선호하기 때문에 축 어적/비 축 어적 문자열로 놀아야 할 수도 있습니다.

+2

향후 독자를위한 제쳐두고 : 나는이 것이 * 컴파일러가 아닌지 강력하게 의심합니다. 문제 였고 실제로 진단에 실패했습니다. 컴파일러 버그는 거의 없지만 개발자는 Visual Studio 디버거에서 문자열보다 많은 백 슬래시가 실제로 존재한다고 생각하면서 매우 자주 혼란 스럽습니다. 의심 스럽다면'Console.WriteLine'과 같이 문자열을 표시하십시오. 축 어적 문자열 리터럴'@ "c : \ SQLSOURCE.txt"는 이중 백 슬래시가 포함 된 문자열 객체로 끝나지 않습니다. –