2011-03-21 30 views
4

enter image description here爲什麼這個逐字字符串不工作,因爲我期望單元測試斷言並在調試器中顯示一個奇怪的值?

問題:爲什麼調試器顯示 「directagents \ A \ aanodide」,而不是逐字字符串@ 「directagents \ aanodide」 的值。

UPDATE 這似乎是一個ReSharper的怪癖。 重現:

  1. 輸入一個帶有「\ a」的文字字符串。
  2. 應用重構 「更改爲逐字SRING」
    • 「\ A」 成爲日逐字字符串無形
    • 「\ A」 是不是真的走了。從即時窗口

更多證據表明手類型化與複製粘貼。 enter image description here

回答

4

調試器不知道您使用編譯器verbatim風格來創建字符串。它只是使用最不常用的最常見表示法來顯示字符串。

除了接受換行外,逐字字符串也不能識別換碼序列,因此\ a是一個鐘形字符,最終爲一個字符中的兩個字符,而當不使用逐字字符時則是一個字符。

您可以查找C#字符串文字here的引用。

+0

這不是我的經驗(visual studio 2010,.NET 4) – 2011-03-21 18:20:08

+1

我認爲馬特是正確的 - 我重新輸入了代碼行,它給了我一個不同的結果,這讓我意識到鐘形字已隱藏在字符串由ReSharper重構...我也應該說「謝謝」讓我想到的事實是\ a是一個鐘聲字符:) – 2011-03-21 19:09:12

相關問題