c# - 为什么我收到无法访问的代码检测到错误
问题描述
我正在尝试编写一个检查何时p
将等于的类p0
。但是我不断收到警告CS0162: Unreachable code detected
和错误,CS0161: 'Arge.NbYear(int, double, int, int)': not all code paths return a value.
我尝试更改控制语句,但我无法正确处理。
class Arge
{
public static int NbYear(int p0, double percent, int aug, int p)
{
// your code
double percent_div = (percent <= 0.0) ? 0.0 : percent / 100.0;
if (p0 < p)
{
for (int count = 0; p0 > p; count++)
{
var annual_increase = p0 * percent_div + aug;
int annual_inc = Convert.ToInt32(annual_increase);
p0 = p0 + annual_inc;
return count;
}
}
else
{
return 0;
}
}
}
解决方案
考虑这种情况,当 for 循环根本不会运行时,那么这个方法会返回什么?编译器说的是同样的事情,因为如果流从不进入 for 循环,它就找不到任何逻辑流来返回任何值。
解决方案可以是在 for 循环之后放置 return 语句,也可以在方法末尾添加 return 语句,或者删除 else 子句并简单地将 return 语句放在那里。(从逻辑上讲,我建议删除 else 子句并简单地返回 0)
编辑:注释掉 else 语句的简单示例https://dotnetfiddle.net/Oywe1x(请原谅我的低质量编辑,因为我正在用手机回复)
推荐阅读
- openebs - 在创建 cStor 池之前是否需要格式化磁盘?
- java - 文件输入到 Spring Boot 应用程序
- laravel - Laravel Eloquent - 获取特定行和其他
- python - 获取集合的元素,不包括一些
- vue.js - Mixin 渲染函数组合
- facebook - 检测 Facebook API 用户货币的新方法
- ionic3 - 我的通用链接不起作用,但深层链接有效
- java - 无法将对象放入连接到其他对象的哈希图中
- azure-ad-graph-api - Graph API - 获取特定时间间隔内的可用房间列表
- matlab - 如何构建一个 Matlab 工具箱