#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