包含"#"识别为预处理器指令的逐字字符串


#if DEBUG
    string s = @"
# text";
#endif

如果定义了调试,则使用Visual Studio 2017构建上述代码而不会出错。

如果未定义调试,则构建会在此错误中失败:

错误CS1024:预处理器指令预期

此问题已报告给C#语言设计社区。

我可以使用非verbatim字符串解决问题:

#if DEBUG
    string s = "n" +
"# text";
#endif

在我的特殊用例中,我宁愿逐字保持字符串。是否有不同的方法来解决此问题?

如果您无法完成,请四处走动。

const string shellScript = @"
# text";
#if DEBUG
    string s = shellScript;
#endif

编译器不会警告未使用的常数,也不会(我希望(任何过度狂热的静态分析仪。作为额外的好处(?(,您可以解释逐字字符串的实际代表。

显然没有办法避免此问题,除非您的VS。

但是,如果它给您带来的问题,您可以尝试使用StringBuilder,它可能会给您更一致的外观

#if DEBUG
    Var sb = new StringBuilder();
    S.AppendLine("rah");
    S.AppendLine("");
    S.AppendLine("# Text");
    S.AppendLine("# Blah");
#endif

相关内容

  • 没有找到相关文章

最新更新