簡體   English   中英

包含“#”的逐字字符串被識別為預處理器指令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM