gpt4 book ai didi

c# - if block 的重构

转载 作者:太空宇宙 更新时间:2023-11-03 17:19:42 26 4
gpt4 key购买 nike

在下面的代码中,我有 2 个 if block 。
A、对象为null时先返回错误。
B,第二个将尝试发送对象,如果失败则返回错误。仅当不是 A,对象不为空时才执行。

private bool SendToERP(Foo foo, out string error)
{
error = "";
var ticketIn = TicketFromFoo(foo, out string err);

if(ticketIn == null)
{
error = err;
return false;
}

if ( !GenericERP_TicketSubmit(ticketIn, out err))
{
error = err;
return false;
}

return true;
}

这些条件相同后的操作,我想重构为一个独特的 if block 。

因为我不能扭曲我的 head 2 条件和一个 and 我写了一个 simple truth table帮我。但这对我没有任何帮助。

最佳答案

&&|| 运算符短路。它被认为是从左到右。这意味着:

1) 如果 && 将其第一个操作数评估为假,则不会评估其第二个操作数。

2) 如果 || 将其第一个操作数评估为真,则不会评估其第二个操作数。

在您的情况下,如果 ticketIn 为 null,则您不希望执行 TicketSubmit。因此,您可以通过 OR 对 2 个条件进行分组。像这样。

    var ticketIn = TicketFromFoo(foo, out string err);        
if(ticketIn == null || !GenericERP_TicketSubmit(ticketIn, out err))
{
error = err;
return false;
}
return true;

关于c# - if block 的重构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51557911/

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