问题描述
我这个函数是实现网站当前位置导航的使用的递归protectedstringnv_back_class(stringcid,stringhtml){if(cid!="0")//判断是否是根目录{SqlCommandcmd=newSqlCommand("select*fromclasswhereclassid="+cid,con);SqlDataReaderdr=cmd.ExecuteReader();dr.Read();stringclassname=dr["classname"].ToString();stringContents=dr["Contents"].ToString();stringid=dr["cid"].ToString();html="<ahref="+Contents+"target=_blank>"+classname+"</a> >>> "+html;dr.Close();nv_back_class(id,html);}returnhtml;}目前问题是我在returnhtml;设置了个断点返回的比如是111但是用stringclass_html=nv_back_class(cid,str);去返回值得只有1也就是说dr.Close();nv_back_class(id,html);这句里的东西没取得不知道为什么请高人指点一下实在想不通
解决方案
解决方案二:
原因很简单。因为字符串驻留技术,所以string虽然是引用类型,常常表现出值类型的行为。//假设有两个方法如下:publicvoidFoo(stringstr){str="notaaa";}publicvoidFoo(refstringstr){str="notaaa";}/************************************************************///调用,这里注意:stringstr="aaa";Foo(str);//调用完毕之后,stringstr的值是多少,还是"aaa"!!!Foo(refstr);//调用完毕后,stringstr的值变成了"notaaa";