如何在 if 语句中使用布尔返回值而不再次调用该方法



如何使用在一个文件中调用的方法的布尔返回值在第二个文件中创建 if 语句,而无需再次调用该方法?

作为一个简化的示例,以下 if 语句嵌套在 APIHelper.cs 文件中的 CreateSubscription 方法中:

//APIHelper.cs
if (MakePayment(Order) == true)
 {
     //billing logic
 }
 else
 {
     return false;
 }

以下 if 语句位于引用 APIHelper.cs 文件的 Payment.cs 文件中:

//Payment.cs
if (APIHelper.CreateSubscription(Order) == false)
{
    //error logic
    return;
}

我需要使用 APIHelper.cs 文件中 MakePayment 方法的布尔返回值,而无需再次调用 MakePayment 方法来创建如下所示的 if-语句.cs 文件中。但在这种情况下,由于我第二次调用该方法以获取返回值,因此付款运行两次。

//Payment.cs
if (APIHelper.CreateSubscription(Order) == false && APIHelper.MakePayment(Order) == true)
{
    //error logic 1
    return;
}         
else if (APIHelper.MakePayment(Order) == false)
{
    //error logic 2
    return;
}

最简单的方法是将结果存储在变量中

bool subscriptionSucceeded = APIHelper.CreateSubscription( Order );
bool paymentSucceeded = APIHelper.MakePayment( Order );
if( !subscriptionSucceeded && paymentSucceeded )
{
    // Error logic 1
}
else if( !paymentSucceeded )
{
    // Error logic 2
}

您只需要创建一个属性来存储付款调用。您可以安全地访问酒店的结果,而无需重新付款:

//APIHelper.cs
public PaymentResult { get; private set; }
// inside method
PaymentResult = MakePayment(Order);
if (PaymentResult == true)
 {
     //billing logic
 }
 else
 {
     return false;
 }    

并像这样访问它:

//Payment.cs
if (APIHelper.CreateSubscription(Order) == false && APIHelper.PaymentResult == true)
{
    //error logic 1
    return;
}         
else if (APIHelper.PaymentResult == false)
{
    //error logic 2
    return;
}

最新更新