如何在不重新调用方法的情况下在If语句中使用布尔返回值

时间:2017-05-16 21:37:12

标签: c# if-statement methods return-value

如何使用在一个文件中调用的方法的布尔返回值在第二个文件中创建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;
}

我需要使用API​​Helper.cs文件中的MakePayment方法的布尔返回值,而不是再次调用MakePayment方法来创建如Payment.cs文件中的以下if语句。但在这种情况下,因为我第二次调用该方法来获得返回值,所以付款会运行两次。

//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;
}

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

//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;
}