日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > C# >内容正文

C#

关于C# this 指针

發(fā)布時(shí)間:2025/3/21 C# 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于C# this 指针 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
This關(guān)鍵字的另一種用法是使用一項(xiàng)名為構(gòu)造函數(shù)鏈的技術(shù)來(lái)設(shè)計(jì)類。當(dāng)定義了多個(gè)構(gòu)造函數(shù)時(shí),這個(gè)設(shè)計(jì)模式就會(huì)很有用。由于構(gòu)造函數(shù)通常會(huì)驗(yàn)證傳入的參數(shù)來(lái)強(qiáng)制各種業(yè)務(wù)規(guī)則,所以在類的構(gòu)造函數(shù)集合中經(jīng)常會(huì)找到冗余的驗(yàn)證邏輯。考慮如下更新后的Motocycle Class Motorcycle { Public int driverIntensity; Public string driverName; Public Motorcycle() {} //冗余的構(gòu)造函數(shù)邏輯 Public Motorcycle(int intensity) { If(intensity > 10) { Intensity = 10; } driverIntensity = intensity; } Public Motorcycle(int intensity,string name) { If(intensity>10) { Intensity = 10; } driverIntensity = intensity; driverName = name; } …… } 在這里,每一個(gè)構(gòu)造函數(shù)確保強(qiáng)度等級(jí)不超過(guò)?10。雖然可以這么做,但是在兩個(gè)構(gòu)造函數(shù)中有冗余代碼語(yǔ)句。這不夠完美,如果規(guī)則改變的話,就必須在多個(gè)位置更新代碼。 改進(jìn)這種情況的一個(gè)方法就是在?Motocycle類中定義一個(gè)用來(lái)驗(yàn)證傳入?yún)?shù)的方法。如果這么做的話,每一個(gè)構(gòu)造函數(shù)就可以進(jìn)行字段賦值之前調(diào)用這個(gè)方法。雖然這個(gè)方法確實(shí)可以隔離在業(yè)務(wù)規(guī)則改變時(shí)需要修改的代碼,但是我們就會(huì)面臨如下的冗余: class Motorcycle {? public int driverIntensity; public string driverName; //構(gòu)造函數(shù) Public Motorcycle() {} Public Motorcycle(int intensity) { SetIntensity(intensity); } Public Motorcycle(int intensity,string name) { SetIntensity(intensity); driverName = name; } Public void?SetIntensity(int intensity) { If(intensity >10) { Intensity = 10; }? driverIntensity = intensity; } …… } 一個(gè)更簡(jiǎn)潔的方案就是,讓一個(gè)接受最多參數(shù)個(gè)數(shù)的構(gòu)造函數(shù)做“主構(gòu)造函數(shù)”,并且實(shí)現(xiàn)必須的驗(yàn)證邏輯。其余的構(gòu)造函數(shù)可以使用?this關(guān)鍵字把傳入的參數(shù)轉(zhuǎn)發(fā)給主構(gòu)造函數(shù),并且提供所有必須的其他參數(shù)。這樣,整個(gè)類中只會(huì)有一個(gè)構(gòu)造函數(shù)需要我們?nèi)ゲ傩?#xff0c;其余構(gòu)造函數(shù)基本是空的。 下面是Motorcycle?類的最后一次迭代。在串聯(lián)構(gòu)造函數(shù)時(shí),請(qǐng)注意?this如何在構(gòu)造函數(shù)本身的作用域之外“躲開(kāi)”構(gòu)造函數(shù)的聲明: class Motorcycle { public int driverIntensity; public string driverName; //構(gòu)造函數(shù) public Motorcycle(){} public Motorcycle(int intensity):this(intensity,””){} public Motorcycle(string name):this(0,name){}? //這是做所有工作的“主”構(gòu)造函數(shù)?. Public Motorcycle(int intensity,string name) { If(intensity>10) { Intensity = 10; } driverIntensity = intensity; driverName = name; } …… } 需要理解的是,使用this關(guān)鍵字串聯(lián)構(gòu)造函數(shù)不是強(qiáng)制的。但如果使用這項(xiàng)技術(shù),類定義就會(huì)更容易維護(hù)、更簡(jiǎn)明。再說(shuō)一次,使用這項(xiàng)技術(shù)可以簡(jiǎn)化編程任務(wù),因?yàn)檎嬲墓ぷ鞫冀唤o了一個(gè)構(gòu)造函數(shù)來(lái)做,而其他構(gòu)造函數(shù)只是在“踢皮球”。?
from:?http://blog.csdn.net/cyh_24/article/details/7747995

總結(jié)

以上是生活随笔為你收集整理的关于C# this 指针的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。