首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VC >

为啥不能是全局变量呢

2013-09-08 
为什么不能是全局变量呢?#include stdafx.h#include Form1.husing namespace win//Form1^ gl_form//

为什么不能是全局变量呢?


#include "stdafx.h"
#include "Form1.h"

using namespace win;

//Form1^ gl_form;//放在这里不行
[STAThreadAttribute]

int main(array<System::String ^> ^args)
{
// 在创建任何控件之前启用 Windows XP 可视化效果
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false); 

// 创建主窗口并运行它
Form1^ gl_form = gcnew Form1();//放在这里可以
Application::Run(gl_form);

return 0;
}

为什么会这样呢?如果我需要一个全局的应该怎么做呢?
另外有没有什么这方面书介绍一下呢?
[解决办法]
public ref class Global abstract sealed {
public:
  static Form1^ gl_form = gcnew Form1();
};

[解决办法]
首先你要清楚一个全局变量在编译为可执行文件后,它放在那里,而托管类型必须声明在托管堆下,它才能被.net框架管理,被垃圾回收,而全局变量只能放在全局变量内存下,这段内存不能被.net框架管理。还有太多太多的原因,这里就不说了,比如托管程序一切皆是对象,而全局变量有可能要打破这个要求。所以不能声明一个全局的托管类型变量

热点排行