gpt4 book ai didi

c# - 在每行代码之前检查条件而不使用多个 IF 语句?

转载 作者:行者123 更新时间:2023-12-02 12:00:15 25 4
gpt4 key购买 nike

是否可以检查语句 block 的每一行的条件是否为真,而无需在每行之前添加 if (condition)

例如:

if (condition)
{
DoSomething();
DoSomethingElse();
DoAnotherThing();
}

在某些时候,另一个后台进程可能在执行 DoSomethingElse() 之前将 condition 设置为 false。本质上,我正在寻找一种有效且更简单的表达方式:

if (condition) DoSomething();
if (condition) DoSomethingElse();
if (condition) DoAnotherThing();

实际上,这是一个很长的代码块,执行一次,如果在任何时候某个特定标志发生更改,我想放弃它。

加强此类代码的最佳方法是什么?

最佳答案

否 - 条件将检查一次,然后执行整个 block 。另一种选择可能是在区 block 中注入(inject)救助:

if (condition)
{
DoSomething();
if(!condition) return;
DoSomethingElse();
if(!condition) return;
DoAnotherThing();
}

另一种方法是函数是否可以参数化,以便您可以将它们放入循环中:

foreach (varmyParam in parameters)
{
if(condition)
DoSomething(myParam);
}

编辑

再想一想,这可能是您最好的选择:

List<Action> funcs = new List<Action> {DoSomething, DoSomethingElse, DoAnotherThing};
foreach( Action a in funcs)
{
if(condition) a();
}

这要求所有方法都具有相同的签名(在您的情况下返回不带参数的 void),但它更干净一些。

关于c# - 在每行代码之前检查条件而不使用多个 IF 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18514070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com