在我的表单构造函数中创建一个CustomPropertyList类。

form(String ^s)
{
    InitializeComponent();
    CustomPropertyList ^propertyList = gcnew CustomPropertyList(s);
...

CustomPropertyList类具有析构函数
CustomPropertyList::~CustomPropertyList()
{

    if (MessageBox::Show("Do you want to save your changes?","Editin",MessageBoxButtons::YesNo)==DialogResult::Yes)
...

程序退出时为什么不调用它? (我知道不是,因为我没有看到消息框,并且那里有一个断点)

我非常感谢您的帮助

最佳答案

因为这不是析构函数,所以这是Dispose方法(用C#术语表示)。如果客户端不调用Dispose,则永远不会调用它。另一方面,除非使用GC::SuppressFinalize来阻止它,否则应调用finalizer(!CustomPropertyList)。

从C#代码中,可以使用Dispose调用〜CustomPropertyList。从C++ / CLI客户端代码中,可以使用delete运算符调用它。

在此C++ / CLI大师文章中查看更多详细信息:http://www.codeproject.com/KB/mcpp/cppclidtors.aspx

09-10 04:01