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

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

什么?原來C#還有這兩個(gè)關(guān)鍵字:Explicit 和 Implicit

admin
2023年9月4日 11:2 本文熱度 1655

介紹今天的主角: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í)間。代碼大致是醬紫:


public class DateTimeRange
{
   public DateTime StartTime { get; set; }
   public DateTime EndTime { get; set; }
   public DateTimeRange(DateTime startTime, DateTime endTime)
   
{
       StartTime = startTime;
       EndTime = endTime;
   }
}


在實(shí)際的使用場(chǎng)景中,我們項(xiàng)目里往往會(huì)去獲取這個(gè)時(shí)間段類的小時(shí)數(shù)。


(timeRange.EndTime - timeRange.StartTime).TotalHours;


是的,一開始我們就是醬紫寫的。但是寫起來很不爽,每次都要復(fù)制N次。然后提取成了一個(gè)方法,GetRangeHours()。但是你懂的,一旦程序員懶起來,它會(huì)連GetRangeHours都不想寫(雖然VS會(huì)給你提示,一般只需要按兩三次鍵盤)。所以后來就有了這個(gè)版本:


public class DateTimeRange
{
   public DateTime StartTime { get; set; }
   public DateTime EndTime { get; set; }
   public DateTimeRange(DateTime startTime, DateTime endTime)
   
{
       StartTime = startTime;
       EndTime = endTime;
   }
   //operator 后面跟需要轉(zhuǎn)換的類型
   public static implicit operator double(DateTimeRange timeRange)
   
{
       return (timeRange.EndTime - timeRange.StartTime).TotalHours;
   }
}


然后使用起來就成了這樣:

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