2014-11-19 2 views
2

просто интересно. Интересно, почему:Странный результат строки

string str = @"// 
    // Use a new char[] array of two characters (\r and \n) to break 
    // lines from into separate strings. \n Use RemoveEmptyEntries 
    // to make sure no empty strings get put in the string array. 
    //"; 

результат текста в RichTextBox был:

// 
    // Use a new char[] array of two characters (\r and \n) to break 
    // lines from into separate strings. \n Use RemoveEmptyEntries 
    // to make sure no empty strings get put in the string array. 
    // 

но

string str = @"// 
    // Use a new char[] array of two characters (\r and \n) to break 
    // lines from into separate strings."+" \n" + @" Use RemoveEmptyEntries 
    // to make sure no empty strings get put in the string array. 
    //"; 

результат текста в RichTextBox был:

// 
    // Use a new char[] array of two characters (\r and \n) to break 
    // lines from into separate strings. 
Use RemoveEmptyEntries 
    // to make sure no empty strings get put in the string array. 
    // 

ответ

3

Там не буквальные @ перед вашей центральной строкой «\ п» Эквивалент бы

string str = @"// 
// Use a new char[] array of two characters (\r and \n) to break 
// lines from into separate strings."+ @" \n" + @" Use RemoveEmptyEntries 
// to make sure no empty strings get put in the string array. 
//"; 

\ является маскирующим в обычных строках, но строковые литералы использовать содержимое точно так, как есть, за исключением случай ", который экранирован как" "

+0

даже вы положили @ результат будет тот же ... – Elegiac

+0

@Elegiac Нет, это привычка. Он будет читать «\ n» как простую строку, но без '@' он также найдет в нем escape-последовательности. – Shaharyar

+0

я вижу спасибо ... – Elegiac

1

Потому что перед вами« @ n »нет второго примера. Любая escape-последовательность после @ (дословный строковый литерал) будет проигнорирована. В первом примере это было проигнорировано, но не во втором.

Посмотрите на это: http://msdn.microsoft.com/en-us/library/aa691090(v=vs.71).aspx

+1

даже вы ставите @ результат будет таким же .. – Elegiac

Смежные вопросы