如何在我的函数中删除此错误消息?

时间:2013-04-23 06:57:47

标签: c#

我在类中有一个函数但是在“Withdraw”下收到错误,“并非所有代码路径都返回一个值”。我认为添加一个虚空可以做到这一点,但似乎无法让它消失。知道如何修改我的代码吗?这是部分:

public virtual double Withdraw(double amount)
  {
     if (amount > balance)
     {
        MessageBox.Show("Debit amount exceeded account balance.", "Insufficient funds!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
     }
     else
        return balance - amount;
  }

7 个答案:

答案 0 :(得分:4)

由于您已声明函数返回double,因此需要执行if中的任何一个分支。

true返回后,您需要从if的{​​{1}}侧返回一个值,例如:

MessageBox

答案 1 :(得分:3)

不是直接回答,但我认为您的方法用于多种用途,计算并向用户显示消息,您应该考虑使用这样的两种方法

public virtual double Withdraw(double amount)
{
    if (amount > balance)    
        throw new Exception("your message")        
    else
        return balance - amount;
}

来电者的代码

try{
 Withraw(...)
}
catch{
 Your messageBox
}

答案 2 :(得分:2)

你的颂歌应该总是在任何条件下返回一些值,所以

public virtual double Withdraw(double amount)
  {
     if (amount > balance)
     {
        MessageBox.Show("Debit amount exceeded account balance.", "Insufficient funds!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        return SOME_NON_VALID_VALUE_FOR_YOUR_APP; //or raise an exception,
        // depends on architecture 
     }

     return balance - amount;       
  }

考虑所提供代码的逻辑,如果amount > balance它不正确,否则返回计算。

答案 3 :(得分:2)

以下代码行不返回任何值是主要原因:

if (amount > balance)
 {
    MessageBox.Show("Debit amount exceeded account balance.", "Insufficient funds!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
 }

您应该在MessageBox.Show之后返回一个双精度值。

答案 4 :(得分:1)

您需要在MessageBox.Show idealy 0

之后返回一些内容
  public virtual double Withdraw(double amount)
  {
     if (amount > balance)
     {
        MessageBox.Show("Debit amount exceeded account balance.", "Insufficient funds!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            return 0;
     }
     else
        return balance - amount;
  }

答案 5 :(得分:0)

你的函数应该返回一个double,但如果amount>balance则不会。

public virtual double Withdraw(double amount)
{
    if (amount > balance)
    {
        //your messagebox code    
        return double.NaN; // or whatever you think is correct in this case.
    }
    else
        return balance - amount;
}

答案 6 :(得分:0)

您将通过您的函数返回double值。

但只在其他部分提及。

如果,如果(金额>余额)条件成立,那么您还必须返回该值。

见下面的代码:

    public virtual double Withdraw(double amount)
      {
         if (amount > balance)
         {
            MessageBox.Show("Debit amount exceeded account balance.", "Insufficient funds!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
         }
         else
            return balance - amount;

         return 0;
      }