【问题标题】:How to Use a Boolean Return Value in an If-statement without Invoking the Method Again如何在不再次调用方法的情况下在 If 语句中使用布尔返回值
【发布时间】:2017-05-16 21:37:11
【问题描述】:

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

【问题讨论】:

  • 1 - 不要与 bool 文字比较,直接使用结果。 2 - 好吧,您可以创建一个布尔变量并将结果存储在那里,对吧?

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


【解决方案1】:

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

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

【讨论】:

  • 非常感谢您的回答!这比我想象的要简单得多。我以为保存为变量的方法也会执行,现在我明白了。
【解决方案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;
}

【讨论】:

  • 感谢您的回答!您的回答结合上面的变量示例大大扩展了我对 C# 的理解。
猜你喜欢
  • 2021-09-29
  • 2013-12-12
  • 2014-12-19
  • 1970-01-01
  • 2016-02-13
  • 2021-10-05
  • 1970-01-01
  • 1970-01-01
  • 2020-07-30
相关资源
最近更新 更多