全局变量、局部变量

来源:互联网 发布:淘宝图片怎么搜索引擎 编辑:程序博客网 时间:2024/06/15 22:11

前言

       全局变量和局部变量!知道了会特别的简单但是就怕不知道啊,不知道就特别难了,还好我知道了。嘻嘻!

内容

       定义:
       局部变量:在程序中只在特定过程或函数中可以访问的变量。局部变量是相对于全局变量而言的。
       全局变量:既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数引用。一个局部变量在被其它对象引用时,会是一个空值。但全局变量却不会出现这种情况。

       解决在敲修改密码窗体时遇到的全局变量和局部变量问题!

       先说明一下:修改密码,先是把两个相同的密码从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;        }    }

       这样对于这个函数来说都是全局变量了,返回的是“成功”。

总结

       变量分为局部与全局,局部变量又可称之为内部变量。由某对象或某个函数所创建的变量通常都是局部变量,只能被内部引用,而无法被其它对象或函数引用。

0 0
原创粉丝点击