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