在更大的#if条件块内的新行中包含#if的多行字符串

时间:2018-09-06 08:02:13

标签: c#

我有一些C#代码,其中包含多行字符串(这是一些代码模板),该多行字符串的某些行以#if something开头。一切正常,除非我将整个C#类包装在实际条件#if #endif中,在这种情况下,编译器会说“无效的预处理程序指令”。

代码段:

#if WIN32
class Something {
    string s = @"
#if SOMETHING
#endif";
}
#endif

有没有办法使这项工作有效? 我曾考虑过在代码模板中使用其他字符,并使用replaces对其进行修复,但这对我来说不是一个很好的解决方案,因为这会使代码模板更难以理解。

2 个答案:

答案 0 :(得分:1)

我将执行以下操作:

const string hash = "#";

#if WIN32
class Something {
    string s = $@"
{hash}if SOMETHING
{hash}endif";
}
#endif

答案 1 :(得分:0)

我认为您将“和;”放在错误的位置。这很好,没有任何投诉

#if DEBUG
class Something {
    readonly string s = @"
#if CODE_DEFINED_ONLY_IF_SET
public class IAmOnlyHappyWhenItRains{
    public int Year{get;set;}
    public string Name{get;set;}
}
#endif
";
}
#endif