我在类中有一个函数但是在“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;
}
答案 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;
}