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

C#-在[Conditional(";debug";)]函数中访问预处理器调试变量,c#,function,variables,debugging,preprocessor,C#,Function,Variables,Debugging,Preprocessor,例如: #if DEBUG float testVar; #endif [Conditional("DEBUG")] void TestFunc() { testVar = 3; } 如您所见,我试图访问调试预处理器if语句中的变量。但不幸的是,这会在发布模式下导致编译错误。有没有一种方法可以使它在发布模式下工作而不必使用预处理器if语句围绕TestFunc()的每个调用?,一种方法是使用在发布版本中没有支持字段的属性: #if DEBUG flo

例如:

#if DEBUG
    float testVar;
#endif

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

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

一种方法是使用在发布版本中没有支持字段的属性:

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

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

为什么不在赋值语句周围加上
#如果DEBUG
我认为这里一切都很酷。您会遇到什么样的编译错误?您确定存在活动的“调试”解决方案配置吗?@godot“您会遇到什么类型的编译错误?”如果您仔细查看我写的文字:“但不幸的是,这会在发布模式下导致编译错误”,我提到错误在发布模式下。我希望它能在发布和调试模式下工作。@KlausGütter这是一种方法,但我希望避免在我的代码中使用这些预处理器语句。在我给出的这个例子中,它可以很好地工作,但是在更复杂的例子中,变量在许多不同的地方使用,它变得非常混乱。这很好。我只是想在我标记你的答案之前等待,因为我想看看其他人是否有其他(或更好的)解决方案。