淺談C#指針問(wèn)題
花了很長(zhǎng)時(shí)間的實(shí)踐,終于搞清楚了。類(lèi)或者鏈表等,在指針賦值的時(shí)候,會(huì)使用新的指針。比如:
Foo a = c; Foo b = new Foo(); Foo a = b;
這種情況下,會(huì)把b的指針傳給a,a不再指向c,a以后的操作都會(huì)對(duì)b生效。
如下情況下:
Foo b = new Foo(); Foo a{get {return b;}}
這種情況下,表示a無(wú)法被修改,但是如果你a.bar = 5;的話,那么是可以修改的,為什么呢?因?yàn)榇藭r(shí)任何針對(duì)a的屬性的修改,本質(zhì)上都是對(duì)b的修改,只有a = c;是不可以的??梢院?jiǎn)單理解為a = c;是指針的賦值,而a.bar = 5;只是所指對(duì)象的屬性發(fā)生改變。
綜上所述:
如果你希望a是一個(gè)僅指向b的替身,那么就可以后后面這個(gè)方法了。好處就是,可以隨意修改a的屬性,也就是b的屬性,但是a永遠(yuǎn)會(huì)指向b,不會(huì)被篡改。
如果希望多次使用a,那么只能用第一種方法。但是如果搞不清楚用錯(cuò)的話,會(huì)經(jīng)常不小心修改到原始值。
相關(guān)文章
C#限速下載網(wǎng)絡(luò)文件的方法實(shí)例
本篇文章主要介紹了C#限速下載網(wǎng)絡(luò)文件的方法實(shí)例,可以限制下載文件的速度,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2016-12-12不能在子類(lèi)或外部類(lèi)發(fā)布C#事件代碼分析
一個(gè)朋友問(wèn)了一個(gè)問(wèn)題:“為什么不能在子類(lèi)或外部發(fā)布C#事件?”,我說(shuō)我不知道,要看看生產(chǎn)的IL代碼,下面我們看看2013-11-11教你C#將CSV轉(zhuǎn)為Excel的實(shí)現(xiàn)方法
這篇文章主要介紹了C#?將CSV轉(zhuǎn)為Excel,轉(zhuǎn)換之后可執(zhí)行更多關(guān)于數(shù)據(jù)編輯、格式設(shè)置等操作,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2022-03-03WPF實(shí)現(xiàn)類(lèi)似360安全衛(wèi)士界面的程序源碼分享
最近在網(wǎng)上看到了新版的360安全衛(wèi)士,感覺(jué)界面還不錯(cuò),于是用WPF制作了一個(gè),時(shí)間有限,一些具體的控件沒(méi)有制作,用圖片代替了。感興趣的朋友一起跟著小編學(xué)習(xí)WPF實(shí)現(xiàn)類(lèi)似360安全衛(wèi)士界面的程序源碼分享2015-09-09C#實(shí)現(xiàn)可緩存網(wǎng)頁(yè)到本地的反向代理工具實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)可緩存網(wǎng)頁(yè)到本地的反向代理工具,實(shí)例分析了C#實(shí)現(xiàn)反向代理的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04C#微信公眾號(hào)開(kāi)發(fā)之接收事件推送與消息排重的方法
這篇文章主要介紹了C#微信公眾號(hào)開(kāi)發(fā)之接收事件推送與消息排重的方法,詳細(xì)分析了事件推送與消息排重的使用技巧,對(duì)微信開(kāi)發(fā)有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01ListView用法中與滾動(dòng)相關(guān)的需求實(shí)現(xiàn)
這篇文章主要介紹了ListView用法中與滾動(dòng)相關(guān)的需求實(shí)現(xiàn),獲取并設(shè)置ListView的滾動(dòng)位置,以及獲取滾動(dòng)位置處的項(xiàng)目,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06