Poniższy kod generuje błąd kompilatora dotyczący „nierozpoznanej sekwencji ucieczki” dla każdego ukośnika odwrotnego:
string foo = "D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
Chyba muszę uciec od ukośnika odwrotnego? Jak mogę to zrobić?
Odpowiedzi:
Za każdym razem możesz użyć podwójnego odwrotnego ukośnika
string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
lub użyj symbolu @
string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
Spróbuj tego:
string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
Problem polega na tym, że w łańcuchu a \
jest znakiem ucieczki. Używając @
znaku, mówisz kompilatorowi, aby ignorował znaki ucieczki.
Możesz także poradzić sobie z ucieczką przed \
:
string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
Jeśli ciąg jest ścieżką do pliku, jak w przykładzie, możesz również użyć ścieżek do plików w stylu uniksowym:
string foo = "D:/Projects/Some/Kind/Of/Pathproblem/wuhoo.xml";
Ale inne odpowiedzi mają bardziej ogólne rozwiązania dotyczące ucieczki ciągów w C #.
string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
To zadziała, albo poprzednie przykłady też. @ „...” oznacza dosłowne traktowanie wszystkiego między cudzysłowami, więc możesz to zrobić
@"Hello
world"
Aby dołączyć dosłowny znak nowej linii. Jestem bardziej stara i wolę uciec „\” z „\\”