奇妙的字符串
在工作中經(jīng)常用到字符串,所以抽空時候多看了一下C#中string的內(nèi)容。不看不知道,一看還真奇妙。
在這之前,先說一下C#中方法參數(shù)的分類?!禖# Language Specification 1.2》中分了4類:值參數(shù)(默認(rèn)都是進行這種傳遞),引用參數(shù)(在定義方法時用ref聲明,調(diào)用時也要加上ref關(guān)鍵字),輸出參數(shù)(在定義方法時用out聲明,調(diào)用時也要加上out關(guān)鍵字;與引用參數(shù)的區(qū)別是ref的實參需要初始化,而out的實參則不需要),參數(shù)數(shù)組(用params關(guān)鍵字聲明,在使用時有些限制,這里不做具體說明了)。
這里就值參數(shù)而言,又根據(jù)傳入的數(shù)據(jù)類型分為值類型的和引用類型的。值類型不難理解,形參作為實參的副本,經(jīng)過函數(shù)處理不會影響傳入的值類型參數(shù);引用類型,由于參數(shù)變量存放的是地址,所以引用類型的參數(shù)經(jīng)過函數(shù)的處理則會反映在退出函數(shù)的時候。
就string類型,其本身屬于引用類型。然而其作為參數(shù)傳遞時,卻表現(xiàn)著值類型的行為。豈不怪哉?我也還沒有找到對此合理的解釋。而且CLR還對字符串進行了駐留內(nèi)存的處理,更是增加了初學(xué)者的困惑。突然感覺到,對于語言的學(xué)習(xí),千萬不可只停留在表面。要深入了解語言背后的內(nèi)幕。正所謂,知其然,更要知其所以然!
浙公網(wǎng)安備 33010602011771號