全局变量和局部变量!知道了会特别的简单但是就怕不知道啊,不知道就特别难了,还好我知道了。嘻嘻!
定义: 局部变量:在程序中只在特定过程或函数中可以访问的变量。局部变量是相对于全局变量而言的。 全局变量:既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数引用。一个局部变量在被其它对象引用时,会是一个空值。但全局变量却不会出现这种情况。
解决在敲修改密码窗体时遇到的全局变量和局部变量问题!
先说明一下:修改密码,先是把两个相同的密码从U层传给外观在传给B层再再再传最后到数据库中把原来密码换成新的密码。改成功了没有呢?给个反映的,就把“成功!”的字符串再传回来,再显示“成功!”。在传回来,传到B层出问题了。一言不合上代码!
这是修改密码的B层错误代码:
public class ModifyPW { Factory.Factory factory = new Factory.Factory(); string str1; public string Modify(string xinPW, string quePW) { if (xinPW == quePW) { IDAL.ImodifyDAL modify = factory.modify(); string str1 = modify.modifyPW(quePW); } else { str1 = "两次密码不一致!"; } return str1; } }看哪出问题了,仔细看几个str1字符串变量的区别。 string str1 = modify.modifyPW(quePW); 当单步调试到这,调用D层的函数返回来的“成功”赋值给str1,此时str1是“成功”再走一步return str1;此时的str1是NULL,这是为啥啊?这两个str1看是是一个其实一个是局部变量一个事全局变量,第一个str1在if里边定义的对于这个函数来说是局部的,所以出了if就不能用了,而全局能用。返回的是全局的str1就当然是NULL了。
B层正确的代码:
public class ModifyPW { Factory.Factory factory = new Factory.Factory(); string str1; public string Modify(string xinPW, string quePW) { if (xinPW == quePW) { IDAL.ImodifyDAL modify = factory.modify(); str1 = modify.modifyPW(quePW); } else { str1 = "两次密码不一致!"; } return str1; } }这样对于这个函数来说都是全局变量了,返回的是“成功”。
变量分为局部与全局,局部变量又可称之为内部变量。由某对象或某个函数所创建的变量通常都是局部变量,只能被内部引用,而无法被其它对象或函数引用。
新闻热点
疑难解答