Visual_Basic 板


LINE

感謝P大的回覆 看了您的文之後 我整理一下 (1) Dim benz as new car() Dim MyCar as car MyCar=benz MyCar參考指向benz,等於benz這個物件,二者存取同個記憶體配置 (2) Dim benz as new car() Dim MyCar as car benz=MyCar 原本benz有自已的記憶體配置,有自已的資料成員,是執行實體的個體(物件) 但benz指向MyCar後,就成了參考,放棄原本的記憶體配置 在語法上是沒有錯的,只是benz由物件成了參考? 請問記憶體配置在benz指向MyCar時會自動釋放掉嗎? 還是一直存在至程式結束? (3) Dim benz as new car() Dim ford as new car() ford=benz 請問如果左右二邊都是物件,都有自已的記憶體配置及資料成員, 這樣的寫法有錯嗎? 語法上有錯嗎? 物件可以去承接物件嗎? 若可以,這樣的寫法,會導致個別的記憶體配置如何處理? ford與benz都指向同個記憶體配置(benz)嗎? ford原本的記憶體配置會自動釋放掉? 或是ford,benz有個別自已的記憶體配置,只是ford的資料成員跟benz一樣, 等於benz copy一份給ford? 感謝大家的解答~ ※ 引述《Peruheru (還在想)》之銘言: : ※ 引述《kucom (kucom)》之銘言: : : 請問一下以下問題: : : (1) : : Dim benz as new car() : : Dim BMW as new car() : : Dim MyCar as car ===>宣告MyCar為car的參考 : : MyCar=benz ===>將MyCar指向benz,故MyCar,benz是指同一個物件, : : 讀取同樣的記憶體配置 : : 那我可以這樣寫嗎? : : Dim MyCar as new car() : : MyCar=benz : : 這樣的寫法有錯嗎? : : MyCar有自已的記憶體配置,還可以指向其他的物件嗎? : MyCar在使用New關鍵字時,配置了一整塊屬於它的空間 : 但benz沒有 : 就像MyCar跟benz原本都是一張設計圖 : 而MyCar使用了New方法取得一堆材料製成一輛車 : benz此時還只是一張設計圖 : 但你卻要求將MyCar的內容「換成那張設計圖」 : 這個在語法上沒有錯,但是會造成兩者都只剩下設計圖 : 原本製造出來的車子就消失不見了 : : (2) : : Dim MyCar as car 是什麼意思? : : 是指宣告成car的參考,所以只能去接由car類別new出來的物件嗎? : 是這樣沒錯,但如果裡面有是基礎型態的成員,如Integer : 那就可以直接指定這個成員的值(有使用過New的話,沒使用過New不能給值) : : (3) : : 假如 : : Dim benz as new car() : : Dim ford as new car() : : 可以這樣寫嗎? : : benz=ford : : 無論本身是物件或是參考都可以承接同樣型態的值嗎? : : 若不行,是為何? : : 若要去接物件,一定要用參考去接嗎? : : 像這樣 : : Dim MyCar as car : : MyCar=ford : : 還是只要承接的型態是相同,都可以, : : 像這樣 : : benz=ford 是成立的? : 參考如果給他一個物件 : 其實就等於將這個物件給予一個別名 : 以後面你的做法來說 : 等於是幫ford這輛車取了一個叫做Benz的別名 : 不管對誰存取,都是修改到同一輛車 : 而前面的情況,則會致使Benz放棄本身的實體車輛,轉變成為Ford的別名 : : (4) : : 之前有看到一本書這樣寫,不是很懂它的寫法: : : Dim ds as new dataset : : ds.ReadXml("person.xml") : : dim dc as DataColumn=ds.Tables("學生").columns("學號") : : 這裡的dc是物件還是參考? 為什麼可以這樣寫? dc去承接同類別的物件嗎? : : ds.Tables("學生").columns("學號") ===>是DataColumn的物件嗎? 所以dc才可以去接 : : 那寫成dim dc as new DataColumn=ds.Tables("學生").columns("學號") 可以嗎? : : 謝謝大家! : 這邊就不多說了,觀念跟上面一樣 : 只要等號右邊的東西是一個經過New出來的物件 : 就可以給予任何型態相同的類別參考 : 舉個例子好了 : 假如開一個Window Form : 在Class底下直接宣告全域變數 Dim benz As Car (假定有Car這個類別) : 然後接著在Form.Load的事件處理函式裡面 : 打入 Dim myCar As Car = New Car() : 下一行打 benz = myCar : 這三行程式代表的意義 : 就是我宣告有個叫做Banz的車,但是目前這輛車不存在 : 然後我自行創造了一個叫做myCar得新車,沒有其他標籤,就叫做myCar : 此時Benz公司覺得我設計的車子不錯,要讓我的車子掛Benz的才出去賣 : 所以就讓剛剛那輛還沒有實體的車,指向我剛剛創造出來的新車 : 此時Benz就指向我所創造的那輛車,但同時這輛車也仍然保有myCar這個名字 : 只不過,一離開Form.Load函式以後 : 因為離開了宣告myCar的範圍 : 理論上剛才那輛創出來的車子因為失去名字應該會消失 : 但是你剛剛在全域變數幫它取了一個叫做Benz的名字 : 所以這輛車直到程式結束或是你自行銷燬之前(Benz = nothing) : 都會保持存在供你存取和利用 : 這樣看得懂嗎? --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.170.105.9







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP