问题:在asp.net页面中声明一个string类型的全局变量,在page_load函数中初始化,然后在其他函数中调用时不可用,指示为空。
原因:c#中,string类型被定义为引用类型,虽然其变量定义和初始化的格式与int等基本类型相似,但其本质还是对象,变量名是指向对象实例的引用,因此string变量的内存空间分配在堆上,当函数范围结束时,对应的堆空间被清空。当在另一个函数中再次调用全局的string变量时,由于其所指对象已被清空,变量值将不可用。
解决方案:把该string变量定义成static类型,使变量对象在堆栈空间分配相应内存,这样将不因为初始化变量的函数的结束而清空变量对象。
原因:c#中,string类型被定义为引用类型,虽然其变量定义和初始化的格式与int等基本类型相似,但其本质还是对象,变量名是指向对象实例的引用,因此string变量的内存空间分配在堆上,当函数范围结束时,对应的堆空间被清空。当在另一个函数中再次调用全局的string变量时,由于其所指对象已被清空,变量值将不可用。
解决方案:把该string变量定义成static类型,使变量对象在堆栈空间分配相应内存,这样将不因为初始化变量的函数的结束而清空变量对象。