日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

关于IssueVision命令模式中对象生命周期的困惑

發布時間:2023/11/27 生活经验 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于IssueVision命令模式中对象生命周期的困惑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在IssueVision的命令模式中有如下代碼(\Patterns\Commander.cs)
??public static void Connect(ToolBarButton button, Command command)
??{
???ToolBarButtonCommander unused = new ToolBarButtonCommander(button, command);
??}
按理說unused是內部變量,生命周期應該在Connect方法的作用范圍內,應該馬上被銷毀,或者說垃圾回收器可以隨時回收這個對象,? 但是這個對象的生命周期跟主窗體一樣.

于是根據以上代碼就設想,當一個類內部變量被一個外部變量引用時,那么在外部變量被銷毀前這個類是不會被銷毀的,以下就是一段測試代碼來做這個試驗(注意結果是否定的)
public?class?TestClass2
????
{
????????
private?string?m_Name;
????????
private?string[]?m_Arr?=?new?string[10000];
????????Button?m_but
=null;
????????
public?Command?m_Command;
????????
public?TestClass2(?string?name,Object?obj)
????????
{


????????????m_Name?
=?name;
????????????
for?(int?i?=?0;?i?<?10000;?i++)
????????????
{
????????????????m_Arr[i]?
=?"adssssssssssssssssssssssssssssssssssssssssssssssssssssss";
????????????}

????????????
if?(obj?!=?null)
????????????
{
????????????????obj?
=?m_Arr;
????????????}

????????}

????????
private?void?HandleEvent(object?sender,?EventArgs?e)
????????
{
????????????m_Command.Execute();
????????}

????????
~TestClass2()
????????
{
????????????MessageBox.Show(m_Name?
+?":我被銷毀");
????????}

????????
public?static?void?Connected(Button?but,?string?name,Object?obj)
????????
{
????????????TestClass2?tstcls?
=?new?TestClass2(name,obj);

????????}

????}


在form_load中有下面代碼
obj 是窗體級的變量(private?Object obj=null;)
???????????? for (int i = 1; i < 20; i++)
??????????? {

??????????????? TestClass2.Connected( "1X" + i,null);
??????????????? TestClass2.Connected("2X" + i,obj);
??????????????? Application.DoEvents();
??????????? }
結果是運行后會彈出2X,1X這樣的對話框表示,這個類,被銷毀了!!!

但是IssueVision里的Commander確沒問題,!!

轉載于:https://www.cnblogs.com/wdfrog/archive/2007/08/07/845799.html

總結

以上是生活随笔為你收集整理的关于IssueVision命令模式中对象生命周期的困惑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。