亚洲乱色熟女一区二区三区丝袜,天堂√中文最新版在线,亚洲精品乱码久久久久久蜜桃图片,香蕉久久久久久av成人,欧美丰满熟妇bbb久久久

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#一句很簡單而又很經(jīng)典的代碼

admin
2024年1月22日 12:25 本文熱度 1659
轉(zhuǎn)自:不三周助
cnblogs.com/u3ddjw/p/11109679.html


一、知識點(diǎn)



二、問題


如果以上四個(gè)問題,你很自信,那么以下,您就不要看了,因?yàn)槲蚁胝f的東西真的很簡單。


如果你開始懷疑自己,可以繼續(xù)向下看。你自己到底真的理解嗎???


再看下面這段代碼有沒有問題?

class Program{    static void Main(string[] args)    {        Transform t = new Transform();        t.v.x = 1;        t.ShowV();        Console.Read();    }}
struct Vector{    public float x;    public float y;    public float z;}
class Transform{    public Vector v { get; set; }    public void ShowV()    {        Console.WriteLine(v.x+"..."+v.y+"..."+v.z);    }}


如果你覺得沒有問題,那么你需要看看。這時(shí)候會(huì)編譯報(bào)錯(cuò),為啥,怎么回事。


第6行編譯報(bào)錯(cuò):



三、分析


如果你非常清楚屬性的本質(zhì)的話,那么上述代碼可以進(jìn)行轉(zhuǎn)換,將屬性轉(zhuǎn)換為普通方法。(屬性的本質(zhì)就是方法嘛)

class Program{    static void Main(string[] args){        Transform t = new Transform();        t.GetVector().x = 1;        t.ShowV();        Console.Read();    }}
struct Vector{    public float x;    public float y;    public float z;}class Transform{    public Vector v;    //set    public void SetVector(Vector v){        this.v = v;    }    //get    public Vector GetVector(){        return v;    }    public void ShowV(){        Console.WriteLine(v.x + "..." + v.y + "..." + v.z);    }}

果然上述的改寫只是將屬性的寫法轉(zhuǎn)為本質(zhì)寫法-寫成兩個(gè)普通的方法。結(jié)果還是報(bào)一樣的編譯錯(cuò)誤。



編譯報(bào)錯(cuò)提示還是一樣的CS1612


再修改一下 

Transform t = new Transform();
//t.GetVector().x = 10; 這邊編譯報(bào)錯(cuò)
Vector v2 = t.GetVector();
v2.x = 10;t.ShowV();
Console.Read();

編譯打印結(jié)構(gòu)是 0..0..0。


壓根就沒變,當(dāng)然沒有變啊,因?yàn)関2是副本,你更改的只是副本,并沒有改變t中的v,同理,通過t.GetVector()也是一個(gè)副本,沒有意義。


所以C#語法在對于這種情況,幫我們做了一個(gè)處理,如果寫了這樣的代碼,直接給出編譯報(bào)錯(cuò)。C#還是很智能的。就是如果我們錯(cuò)誤的進(jìn)行一個(gè)無意義的操作,會(huì)直接給出提示。這里給C#語法贊一個(gè)。


四、雜談


這一段代碼雖然好像很簡單,但是真的藏的很深,樓主工作三年。記得曾經(jīng)有一次去網(wǎng)易二面,被一個(gè)大佬問到這個(gè)問題,懵逼了,就亂猜吧,一開始說,那個(gè)枚舉值中的x只是get,沒有set。然后大佬提示我不是的,然后我才誤打誤撞,恍然大悟,是因?yàn)槊杜e值傳遞是副本傳遞,再進(jìn)行賦值操作沒有意義?,F(xiàn)在想想,能出這個(gè)問題的大佬,真的很強(qiáng),一道很簡單的問題,但是考察的東西真的很多很多。


該文章在 2024/1/22 12:25:22 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved