C#设置值前的数据验证
因此,我的挑战是: 构造函数应该调用基类构造函数来初始化帐户的名称、编号和余额。它还应该在自己的类setInterestRate中调用一个方法,该类应该设置InterestRate变量并验证速率是否为正数。如果传入的利率为负,则将利率设置为零 这对我来说似乎相当简单,但VS正在ping我的setInterestate方法(并非所有代码路径都返回值)。我肯定错过了什么,但我不知道是什么。有什么建议吗?这是我的密码:C#设置值前的数据验证,c#,validation,constructor,C#,Validation,Constructor,因此,我的挑战是: 构造函数应该调用基类构造函数来初始化帐户的名称、编号和余额。它还应该在自己的类setInterestRate中调用一个方法,该类应该设置InterestRate变量并验证速率是否为正数。如果传入的利率为负,则将利率设置为零 这对我来说似乎相当简单,但VS正在ping我的setInterestate方法(并非所有代码路径都返回值)。我肯定错过了什么,但我不知道是什么。有什么建议吗?这是我的密码: public SavingsAccount(string AccountName,
public SavingsAccount(string AccountName, int AccountNumber, decimal Balance, double rate) : base(AccountName, AccountNumber, Balance)
{
InterestRate = rate;
}
public double setInterestRate(double rate)
{
if (rate >= 0)
{
InterestRate = rate;
}
else
{
InterestRate = 0;
}
}
使你的setInterestRate方法无效,如下所示。因为你只需要设置利率
public void setInterestRate(double rate)
如果方法中有返回类型,则必须返回值。这就是你的错误所显示的
建议
将您的兴趣转移到下面的示例中,并在那里进行验证
double interestRate;
public double InterestRate
{
get
{
return interestRate;
}
set
{
if (value >= 0)
{
interestRate = value;
}
else
{
interestRate = 0;
}
}
}
也许不是最好的复制品。。。如果你不喜欢这一个,请随时查看MSDN或搜索SO-并添加更多信息,以便清楚为什么你的一个是不同的。Alexei,谢谢你的链接!我也在查看这篇文章,并将其作为书签,以备将来的挑战+1对于建议部分(找到好的副本可能是更好的方法-OP并不是第一个遇到CS0161错误的人)。请注意,你可以考虑在否定率上抛出异常,它通常比使用“随机”值而不是输入失败更好。谢谢大家的信息,这似乎已经解决了这个问题。我也将尝试在将来从MSDN中找到副本。再次感谢!