什么?原來C#還有這兩個(gè)關(guān)鍵字:Explicit 和 Implicit
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
介紹今天的主角:Explicit 和 Implicit。 我記得我第一次見到這兩個(gè)關(guān)鍵字還是在一次C#基礎(chǔ)測(cè)試中。當(dāng)時(shí)已經(jīng)入C#的坑有兩年多了吧,自認(rèn)為基礎(chǔ)的題應(yīng)該不在話下吧。 然后小手一點(diǎn)視頻網(wǎng)頁(yè)上的進(jìn)行測(cè)試按鈕,請(qǐng)聽題:“請(qǐng)問Explicit的作用是什么?”。我:“%……&……,這他喵的什么東西?是C#的東西?”。 后來在公司問了一些老鳥,好像大家也并不知道這兩個(gè)關(guān)鍵字,畢竟它和static、operator這些大佬比起來,真的太不顯眼了。 它到底是個(gè)什么東西 先來直接看一下msdn對(duì)它的解釋吧: explicit 關(guān)鍵字用于聲明必須使用強(qiáng)制轉(zhuǎn)換來調(diào)用的用戶定義的類型轉(zhuǎn)換運(yùn)算符。 是的,它就是一個(gè)類型轉(zhuǎn)換的語(yǔ)法糖。explicit 與 Implicit的作用其實(shí)是一樣的,它們之間的區(qū)別其實(shí)僅僅是顯示轉(zhuǎn)換和隱式轉(zhuǎn)換的區(qū)別。 來看它的用途 這是我在項(xiàng)目中用到的一處場(chǎng)景,我建立了一個(gè)時(shí)間段類,里面包含了時(shí)間段的開始時(shí)間和結(jié)束時(shí)間。代碼大致是醬紫:
在實(shí)際的使用場(chǎng)景中,我們項(xiàng)目里往往會(huì)去獲取這個(gè)時(shí)間段類的小時(shí)數(shù)。 (timeRange.EndTime - timeRange.StartTime).TotalHours; 是的,一開始我們就是醬紫寫的。但是寫起來很不爽,每次都要復(fù)制N次。然后提取成了一個(gè)方法,GetRangeHours()。但是你懂的,一旦程序員懶起來,它會(huì)連GetRangeHours都不想寫(雖然VS會(huì)給你提示,一般只需要按兩三次鍵盤)。所以后來就有了這個(gè)版本:
然后使用起來就成了這樣: double hours = timeRange; 我*,就是這么灑脫。如果不懂這個(gè)關(guān)鍵字的同事閱讀到這兒,它可能還會(huì)很懵逼:“我擦,這個(gè)類型明明不是那個(gè)類型啊,那個(gè)類型又怎么成了這個(gè)類型,它們?cè)趺催€能等于起來……………………”。此時(shí)的你,只能對(duì)他微微一笑。 想一想你會(huì)在什么場(chǎng)景使用該關(guān)鍵字呢?DTO轉(zhuǎn)換?已有代碼不能變更只能擴(kuò)展?………… 結(jié)束 implicit和Explicit都是起到類型轉(zhuǎn)換的作用,它們的區(qū)別是轉(zhuǎn)換的時(shí)候一個(gè)需要顯式轉(zhuǎn)換而已,剛才我們那個(gè)場(chǎng)景用了隱式轉(zhuǎn)換,如果是顯式轉(zhuǎn)換的話就需要 double hours = (double)timeRange; 來寫了。 該關(guān)鍵字只能在類內(nèi)部使用哦,放心,強(qiáng)大的VS會(huì)給你提示。 該文章在 2023/9/4 11:02:32 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |