我有一些C#代码,其中包含多行字符串(这是一些代码模板),该多行字符串的某些行以#if something
开头。一切正常,除非我将整个C#类包装在实际条件#if
#endif
中,在这种情况下,编译器会说“无效的预处理程序指令”。
代码段:
#if WIN32
class Something {
string s = @"
#if SOMETHING
#endif";
}
#endif
有没有办法使这项工作有效? 我曾考虑过在代码模板中使用其他字符,并使用replaces对其进行修复,但这对我来说不是一个很好的解决方案,因为这会使代码模板更难以理解。
答案 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