编译器抱怨以下代码片段不会总是返回。我已经检查过了,没有发现问题。private int MyFunction(int b){ int result = -1; while (result != 1) { result = MySmallFunction(out var x); if (result == 1) { return x; } }}private int MySmallFunction(out int x){ x = 1; return 1;}MySmallFunction做东西并返回一个代码,1表示成功,其余的是错误代码。如果它返回1,则意味着out int x具有值。如果返回值不是1(错误代码),那么我想重试。如果MySmallFunction从不返回1,则应用程序应该永远停留在循环中。这对编译器来说应该不是问题。
3 回答
芜湖不芜
TA贡献1796条经验 获得超7个赞
我将函数改写为:
private int MyFunction()
{
int result = -1;
int x = int.MinValue;
while (result != 1)
{
result = MySmallFunction(out x);
}
return x;
}
private int MySmallFunction(out int x)
{
x = 1;
return 1;
}
Nowx仅在返回MySmallFunction状态代码1.
慕后森
TA贡献1802条经验 获得超5个赞
根据方法的签名,MyFunction()它应该在所有条件下向调用方法返回一个值。但在您的情况下,您仅if (result == 1)在所有其他情况下返回一个无效值,因此您必须在最后添加一个返回值,它将返回一个整数。所以你必须改变这样的事情:
private int MyFunction(int b)
{
int result = -1;
while (result != 1)
{
result = MySmallFunction(out var x);
if (result == 1)
{
return x;
}
}
return 0;
}
- 3 回答
- 0 关注
- 219 浏览
添加回答
举报
0/150
提交
取消