C#中兩個關(guān)鍵字 Explicit 和 Implicit,你知道嗎?
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
簡介 五分鐘的.NET是一個利用您的碎片化時間來學(xué)習(xí)和豐富.NET知識的博文系列。 它所包含了.NET體系中可能會涉及到的方方面面,比如C#的小細(xì)節(jié),AspnetCore,微服務(wù)中的.NET知識等等。 場景 您可以在下班坐地鐵的時候,拿出手機逛一逛博客園,利用短短的五分鐘完成閱讀。 誕生緣由
文章質(zhì)量 當(dāng)然,并不意味著它篇幅短就質(zhì)量差。所謂麻雀雖小五臟俱全,我們會盡可能保證利用最少的文字去詳細(xì)的闡述內(nèi)容。 正文 好吧,直接開們見山來介紹今天的主角:Explicit 和 Implicit。 我記得我第一次見到這兩個關(guān)鍵字還是在一次C#基礎(chǔ)測試中。當(dāng)時已經(jīng)入C#的坑有兩年多了吧,自認(rèn)為基礎(chǔ)的題應(yīng)該不在話下吧。 然后小手一點視頻網(wǎng)頁上的進行測試按鈕,請聽題:“請問Explicit的作用是什么?”。我:“%……&……,這他喵的什么東西?是C#的東西?”。 后來在公司問了一些老鳥,好像大家也并不知道這兩個關(guān)鍵字,畢竟它和static、operator這些大佬比起來,真的太不顯眼了。 它到底是個什么東西 先來直接看一下msdn對它的解釋吧:
是的,它就是一個類型轉(zhuǎn)換的語法糖。explicit 與 Implicit的作用其實是一樣的,它們之間的區(qū)別其實僅僅是顯示轉(zhuǎn)換和隱式轉(zhuǎn)換的區(qū)別。 來看它的用途 這是我在項目中用到的一處場景,我建立了一個時間段類,里面包含了時間段的開始時間和結(jié)束時間。代碼大致是醬紫:
在實際的使用場景中,我們項目里往往會去獲取這個時間段類的小時數(shù)。
是的,一開始我們就是醬紫寫的。但是寫起來很不爽,每次都要復(fù)制N次。然后提取成了一個方法,GetRangeHours()。但是你懂的,一旦程序員懶起來,它會連GetRangeHours都不想寫(雖然VS會給你提示,一般只需要按兩三次鍵盤)。所以后來就有了這個版本:
然后使用起來就成了這樣:
我*,就是這么灑脫。如果不懂這個關(guān)鍵字的同事閱讀到這兒,它可能還會很懵逼:“我擦,這個類型明明不是那個類型啊,那個類型又怎么成了這個類型,它們怎么還能等于起來……………………”。此時的你,只能對他微微一笑。 想一想你會在什么場景使用該關(guān)鍵字呢?DTO轉(zhuǎn)換?已有代碼不能變更只能擴展?………… 結(jié)束 implicit和Explicit都是起到類型轉(zhuǎn)換的作用,它們的區(qū)別是轉(zhuǎn)換的時候一個需要顯式轉(zhuǎn)換而已,剛才我們那個場景用了隱式轉(zhuǎn)換,如果是顯式轉(zhuǎn)換的話就需要 double hours = (double)timeRange; 來寫了。 該關(guān)鍵字只能在類內(nèi)部使用哦,放心,強大的VS會給你提示。 -EOF - 該文章在 2024/10/10 17:54:12 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |