C#if指令

| 我可以编写代码将变量设置为true还是false,具体取决于我按下的按钮吗?请参见下面的示例。 如果没有,还有什么其他方法可以达到类似的效果?我已经使用指令标记了不同模式的代码,只希望开发人员可以选择切换模式,但是现在我希望为用户提供在模式之间切换的选项。模式的选择仅在程序开始时给出,并且不允许用户切换模式。要切换模式,他只能再次重新启动程序。 如果无法使用指令,最快的方法是什么? (注意:这些语句都是围绕解决方案的) 在我希望实现的pseduocode中:
void button_click(...){
    if(!CONDITION)
        CONDITION = true;
    else
        CONDITION = false;
}


...
#if CONDITION
   //mode X with addtional steps
#endif
    
已邀请:
您正在使用预处理程序指令,并尝试通过无法达到目的的代码进行设置(即使可能)(我敢肯定您不能这样做)。为什么不使用常规布尔字段作为标志?
private bool Condition {get; set;}
    
这是不可能的。 if语句在运行时执行,但是预处理器指令如
#IF
在编译时执行。您需要在编译时决定如何构建代码,并在项目的某个位置(例如在项目的属性中)或在源文件的顶部,将
CONDITION
设置为给定构建所需的任何值。 如果确实需要在运行时做出决定,那么您需要包括所有可能的代码路径,并在运行时决定采用哪一条。     
如果您询问是否可以根据代码中的条件进行条件编译,则答案是否定的。编译器必须在编译时知道要在程序集中包含的内容。您几乎可以肯定地在没有条件编译的情况下实现您想要的目标,但是您打算做什么?     
\'#IF \'指令用于条件编译,这意味着它查找在编译时定义的标记,并按字面意义编译或不编译特定代码。这意味着未编译的代码不属于您的程序,因此无法在运行时使用。如果要在运行时更改行为,则需要修改代码以使用普通标志而不是条件编译。也就是说,您可能需要考虑进行更深入的设计审查,因为基于配置标志添加新的分支功能可能会很快导致代码混乱。     
这些指令提供了有条件地跳过源文件的各个部分,报告错误和警告条件以及描绘源代码的不同区域的能力。 您不能在运行时更改它们。     
#IF
指令是一个预处理程序选项,编译代码后将没有任何意义,因此您无法在编译后使用它们来控制程序流。 至于其他选项,您应该能够轻松地将它们转换为类级变量,但是,不利的是,您的代码中会出现“ 5”个语句,这最终可能会给管理带来麻烦。 另一个对OOP友好的选项是实施State模式。您可以将每个“条件”的行为封装到自己的状态中,并在模式中在它们之间进行切换。对于两个州,这可能是过大的(很可能是)。 另一个参考:http://www.dofactory.com/Patterns/PatternState.aspx     
#IF
是在编译时确定的,您想在运行时进行更改。是不可能的。     

要回复问题请先登录注册