2012-10-23 56 views
0

編譯器正常字符串字面與有效escape sequence\n\t編譯沒有任何錯誤。該編譯器做有效的轉義字符驗證字符串字面

但是我用invalid escape characters\s\w編譯器顯示的error.Yes的那一刻,我們可以通過使用verbatim string\\逃脫它避免了錯誤,但我的問題是

做編譯驗證字符串文字爲有效的escape characters,如果是這樣的話,那只是目的!

回答

3

Do compiler validates the string literals for valid escape characters

是的,它顯然是這樣,這就是爲什麼你會收到錯誤信息。

and if so is that it's only purpose!

我真的不明白這個問題。我假設你想知道爲什麼編譯器不會簡單地接受無效的轉義序列並逐字處理它們。這確實是一種可能性,但它會使字符串文字的解釋略有不一致:根據x的實際值,\x意味着不同的事情。

至少,C#嚴格檢查轉義序列有效性沒有缺點。也許它可以避免因錯字和混淆而產生的錯誤,這些錯誤是由不同數量的連續反斜槓引起的。

+0

hmm..great..i忘記C#的嚴格的類型檢查..但然後他們不得不帶着逐字字符串來沉默那個目的..一路順風...... – Anirudha

+0

@ Fake.It.Til.U.Make.It不,逐字串不會「沉默」任何東西。他們只是提供* distinct *語法來創建字符串文字(特別是在逐字字符串中沒有轉義序列,您只能通過加倍引號來逃避引號本身:''「')。 –

2

是編譯器驗證字符串,如果你使用了無效的轉義字符,你會得到錯誤:

Compiler Error CS1009 - MSDN

An unexpected character follows a backslash (\) in a string. The compiler expects one of the valid escape characters. For more information, see Character Escapes .

+0

thx爲您的寶貴信息 – Anirudha