C# - 在 [Conditional("DEBUG")] 函数中访问预处理器调试变量

C# - Accessing preprocessor debug variables inside of [Conditional("DEBUG")] functions

示例:

#if DEBUG
    float testVar;
#endif

[Conditional("DEBUG")]
void TestFunc()
{
    testVar = 3;
}

如您所见,我正在尝试访问 DEBUG 预处理器 if 语句中的变量。但不幸的是,这会导致发布模式下的编译错误。有没有办法使它在发布模式下工作 而不必用预处理器 if 语句包围 TestFunc() 的每个调用?

一种选择是使用 属性,它在发布版本中没有支持字段:

#if DEBUG
    float testVar { get; set; }
#else
    float testVar 
    {
        get { return 0.0F; }
        set { throw NotImpementedException(); }
    }
#endif

这使得对 testVar 的访问在语法上是合法的,但不会消耗任何实例内存。