#if DEBUG
string s = @"
# text";
#endif
如果定义了DEBUG,则使用Visual Studio 2017构建上述代码时没有错误。
如果未定义DEBUG,则构建将失败,并显示以下错误:
错误CS1024:预期的预处理程序指令
已向C#语言设计社区here报告此问题。
我可以使用非逐字字符串解决问题:
#if DEBUG
string s = "\n" +
"# text";
#endif
在我的特定用例中,我宁愿保持字符串逐字。 有没有 - 可能更好 - 解决这个问题的方法?
答案 0 :(得分:1)
显然没有办法避免这个问题,除非它是你的VS.
但是如果它给你带来问题你可以尝试使用StringBuilder
,它可能会给你一个更一致的外观
#if DEBUG
Var sb = new StringBuilder();
S.AppendLine("rah");
S.AppendLine("");
S.AppendLine("# Text");
S.AppendLine("# Blah");
#endif
答案 1 :(得分:1)
如果你无法通过,那就去吧。
const string shellScript = @"
# text";
#if DEBUG
string s = shellScript;
#endif
编译器不会警告未使用的常量,也不会(我希望)任何过度热衷的静态分析器。作为额外的好处(?),您可以解释逐字字符串实际代表的内容。