【发布时间】:2011-07-22 15:24:19
【问题描述】:
我今天发现了一个非常隐蔽的错误的来源。现在一切都已安全修复,但我想了解为什么当我执行以下代码时:
using namespace System;
ref class EvilClass
{
public:
EvilClass()
{
}
void Print()
{
static bool enablePrint = false;
if( enablePrint )
{
Console::WriteLine("PrintEnabled");
}
else
{
Console::WriteLine("PrintDisabled");
}
enablePrint = true;
}
};
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
EvilClass^ ec = gcnew EvilClass();
ec->Print();
ec->Print();
delete ec;
ec = nullptr;
ec = gcnew EvilClass();
ec->Print();
ec->Print();
delete ec;
ec = nullptr;
return 0;
}
...我得到以下信息:
Hello World
PrintDisabled
PrintEnabled
PrintEnabled
PrintEnabled
我一直认为静态只会在对同一个类实例的调用之间持续存在?
【问题讨论】:
标签: .net variables static c++-cli persistence