[英]Verbatim string containing “#” recognized as a preprocessor directive
#if DEBUG
string s = @"
# text";
#endif
如果定義了DEBUG,則以上代碼將使用Visual Studio 2017正確構建。
如果未定義DEBUG,則構建將失敗,並顯示以下錯誤:
錯誤CS1024:預期的預處理程序指令
該問題已在此處報告給C#語言設計社區。
我可以通過使用非普通字符串來解決此問題:
#if DEBUG
string s = "\n" +
"# text";
#endif
在我的特定用例中,我寧願保持原樣。 是否有其他(可能更好)的方法來解決此問題?
顯然,沒有辦法避免這個問題,除非它是您的VS。
但是,如果它給您帶來了問題,您可以嘗試使用StringBuilder
,它可能會給您更一致的外觀
#if DEBUG
Var sb = new StringBuilder();
S.AppendLine("rah");
S.AppendLine("");
S.AppendLine("# Text");
S.AppendLine("# Blah");
#endif
如果您無法通過,那就四處走走。
const string shellScript = @"
# text";
#if DEBUG
string s = shellScript;
#endif
編譯器不會警告未使用的常量,也不會(我希望)任何過分熱情的靜態分析器。 作為附加的好處(?),您可以解釋逐字字符串實際代表的含義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.