为啥不能是全局变量呢
为什么不能是全局变量呢?#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框架管理。还有太多太多的原因,这里就不说了,比如托管程序一切皆是对象,而全局变量有可能要打破这个要求。所以不能声明一个全局的托管类型变量