设计了一个间接递归的方法,传不出参数来,请大家帮忙看看怎么回事?
问题描述,我定义了间接递归的方法,现在调用这个方法的时候想检查下是否有错误,但是明明报了错误,我却不能将错误变量传出来,问题也标在相应的代码处,请大家帮忙看看!
设计1:方法我作为void类型,通过一个传一个bool变量去接收错误,想实现有错误时,方法停止,返回bool变量的值:
bool errorjudge=false;//定义错误变量
int par;//带入的参数,不用管
//调用方法
adjustFollowBars(par,errorjudge);
adjustSameRowBars(par,errorjudge);
if(errorjudge)
{
//问题:errorjudge始终为false,这是为什么???
}
//方法定义
private void adjustFollowBars(int a[n],bool judge)
{
//调用
adjustFollowBars(a[n-1],judge);
adjustSameRowBars(a[n-1],judge);
}
//方法定义
private void adjustSameRowBars(int a[n],bool judge)
{
//if(错误判定逻辑)
{
judge=true;//调试时可以走到这里
messagebox.show("有错误");
return;//有错误我想终止该方法运行,是否可以实现?
}
adjustSameRowBars(a[n-1],judge);
adjustFollowBars(a[n-1],judge);
}
设计2:方法设计为不带bool参数的,将其自身设置为bool类型,如果有错误,方法返回bool值;
bool errorjudge=false;//定义错误变量
int par;//带入的参数,不用管
//调用方法
errorjudge=adjustFollowBars(par);//接收返回值,看是否有错误
adjustSameRowBars(par);
if(errorjudge)
{
//问题:errorjudge始终为false,这是为什么??????
}
//方法定义
private bool adjustFollowBars(int a[n])
{
//调用
adjustFollowBars(a[n-1]);
adjustSameRowBars(a[n-1]);
return false;//没有错误
}
//方法定义
private bool adjustSameRowBars(int a[n])
{
//if(错误判定逻辑)
{
messagebox.show("有错误");//调试时可以走到这里
return true;//有错误返回值设置为true,是否可以实现?
}
adjustSameRowBars(a[n-1]);
adjustFollowBars(a[n-1]);
return false;//没有错误
}
------解决方案--------------------bool 是值类型,传递时会复制一份,改成传递地址
private void adjustFollowBars(int a[n],ref bool judge)
这数组写法不像 C# 的啊
------解决方案--------------------
------解决方案--------------------设计一中bool是值类型数据,做参数传递在被调函数中是不会改变传入时的值的,需要采用ref修饰参数作为地址传递
设计二中adjustFollowBars返回值必定是false,errorjudge=adjustFollowBars(par),那么errorjudge为false有什么奇怪的
------解决方案--------------------