C#一句很簡(jiǎn)單而又很經(jīng)典的代碼
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
一、知識(shí)點(diǎn) 二、問題 如果以上四個(gè)問題,你很自信,那么以下,您就不要看了,因?yàn)槲蚁胝f的東西真的很簡(jiǎn)單。 如果你開始懷疑自己,可以繼續(xù)向下看。你自己到底真的理解嗎??? 再看下面這段代碼有沒有問題?
如果你覺得沒有問題,那么你需要看看。這時(shí)候會(huì)編譯報(bào)錯(cuò),為啥,怎么回事。 第6行編譯報(bào)錯(cuò):
三、分析 如果你非常清楚屬性的本質(zhì)的話,那么上述代碼可以進(jìn)行轉(zhuǎn)換,將屬性轉(zhuǎn)換為普通方法。(屬性的本質(zhì)就是方法嘛)
果然上述的改寫只是將屬性的寫法轉(zhuǎn)為本質(zhì)寫法-寫成兩個(gè)普通的方法。結(jié)果還是報(bào)一樣的編譯錯(cuò)誤。
編譯報(bào)錯(cuò)提示還是一樣的CS1612 再修改一下
編譯打印結(jié)構(gòu)是 0..0..0。 壓根就沒變,當(dāng)然沒有變啊,因?yàn)関2是副本,你更改的只是副本,并沒有改變t中的v,同理,通過t.GetVector()也是一個(gè)副本,沒有意義。 所以C#語(yǔ)法在對(duì)于這種情況,幫我們做了一個(gè)處理,如果寫了這樣的代碼,直接給出編譯報(bào)錯(cuò)。C#還是很智能的。就是如果我們錯(cuò)誤的進(jìn)行一個(gè)無(wú)意義的操作,會(huì)直接給出提示。這里給C#語(yǔ)法贊一個(gè)。 四、雜談 這一段代碼雖然好像很簡(jiǎn)單,但是真的藏的很深,樓主工作三年。記得曾經(jīng)有一次去網(wǎng)易二面,被一個(gè)大佬問到這個(gè)問題,懵逼了,就亂猜吧,一開始說,那個(gè)枚舉值中的x只是get,沒有set。然后大佬提示我不是的,然后我才誤打誤撞,恍然大悟,是因?yàn)槊杜e值傳遞是副本傳遞,再進(jìn)行賦值操作沒有意義?,F(xiàn)在想想,能出這個(gè)問題的大佬,真的很強(qiáng),一道很簡(jiǎn)單的問題,但是考察的東西真的很多很多。 該文章在 2024/1/22 12:25:22 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |