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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

c# controls.add 控件的使用 ,间接引用还是值引用

發(fā)布時間:2023/12/18 C# 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c# controls.add 控件的使用 ,间接引用还是值引用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

c# controls.add 控件的使用?10

函數(shù)內(nèi)部用下面代碼增加控件:
Button btn = new Button();
btn.Location = new Point( 20, 20);
btn.Size = new Size( 60,40);
btn.Text = "btn'sText";
this.Controls.Add( btn );
問題:函數(shù)執(zhí)行完后,btn應(yīng)該析構(gòu),但 "btn'sText"按鈕一直都存在。若btn被增加到了this指向的類中,那么為什么用this也無法訪問它?
其實你的問題分2部分,
①函數(shù)運行完,btn的確是出了作用域,但是你忘了你的
this.Controls.Add( btn );
這句語句將btn所引用的對象“添加”到了當(dāng)前Form的Controls集合中。
而這種“添加”,實際上是以保存“引用”來實現(xiàn)的。
也就是說,它將new Button();創(chuàng)建的實例的引用保存在了
集合中,從某種意義上可以理解為它自己創(chuàng)建了一個新的Button
對象,然后讓他引用了new Button();創(chuàng)建的實例。
所以,即使你的函數(shù)運行結(jié)束,btn出了作用域;
但是,這不會影響Controls集合里的內(nèi)容。

打個比方:
A,B,C三個人;

A:btn
B:this.controls
c: new Button();


A有C的住址,
B不知道C的住址,
A說:我給你;
B抄下了A說的地址( this.Controls.Add(btn)操作 );
某一天,A死了。。難道這時候B就不知道C的家在哪里了嗎??

②你說this無法訪問你添加的btn。
并不是1樓說的,因為你的代碼還沒有執(zhí)行;
如果你在窗體界面直接拖一個Button控件到界面上,Name=btnA,然后
回到代碼界面,用 “this.btnA”完全可以調(diào)用。

請問:“this.”后面會出現(xiàn)的是什么??
在C#中無外乎:屬性、方法、事件。
我們這里顯然不是方法和時間,
控件也就是屬性之一,
屬性如何定義?在類中定義,
所以你只要在所在Form類的定義中,
加上Button btn;
當(dāng)然,你的代碼就要改成 btn = new Button();
然后你就可以“this.btn”了,
如果還是不理解,那你就看看InitializeComponent();方法
這個方法在窗體程序中必定有;
右鍵--轉(zhuǎn)到定義,看看里面的方法是怎么寫的。

但是這個就不符合手動創(chuàng)建控件的初衷了;
手創(chuàng)控件的初衷和目的就是要靈活,很多時候不知道
需要多少個某種控件,我們是面向?qū)ο蟮摹?br style="content:""; display:block; width:700px; height:0px; margin:20px 0px" />所以,手創(chuàng)控件不應(yīng)該是一個“固定”的東西;
一般可以用集合的方法來保存手創(chuàng)控件的引用,以便調(diào)用;
更多的時候,手動創(chuàng)建控件是為了和delegate綁定,以通用事件的方式來使用手創(chuàng)控件。
如果手動創(chuàng)建一個無論如何都會“出現(xiàn)”的控件,
那不是太對不起VS2008那么強大的功能了嗎。。
“死的”讓VS去干;
“活的”才自己來。

總結(jié)

以上是生活随笔為你收集整理的c# controls.add 控件的使用 ,间接引用还是值引用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。