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

C#中兩個關(guān)鍵字 Explicit 和 Implicit,你知道嗎?

admin
2024年10月10日 11:12 本文熱度 1200
轉(zhuǎn)自:句幽
cnblogs.com/uoyo/p/12157709.html

簡介

五分鐘的.NET是一個利用您的碎片化時間來學(xué)習(xí)和豐富.NET知識的博文系列。

它所包含了.NET體系中可能會涉及到的方方面面,比如C#的小細(xì)節(jié),AspnetCore,微服務(wù)中的.NET知識等等。


場景

您可以在下班坐地鐵的時候,拿出手機逛一逛博客園,利用短短的五分鐘完成閱讀。


誕生緣由

  • 曾經(jīng)學(xué)過的內(nèi)容可能過不了多久就忘了,我們需要一些文章來幫我們查漏補缺。

  • 太長篇幅的文章看著滾動條就害怕了,我們可能更期望文字少的文章。

  • .NET體系的內(nèi)容太多了,平時也不知道該學(xué)哪些,我們可能需要一點點知識線索。


文章質(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對它的解釋吧:

explicit 關(guān)鍵字用于聲明必須使用強制轉(zhuǎn)換來調(diào)用的用戶定義的類型轉(zhuǎn)換運算符

是的,它就是一個類型轉(zhuǎn)換的語法糖。explicit 與 Implicit的作用其實是一樣的,它們之間的區(qū)別其實僅僅是顯示轉(zhuǎn)換和隱式轉(zhuǎn)換的區(qū)別。


來看它的用途

這是我在項目中用到的一處場景,我建立了一個時間段類,里面包含了時間段的開始時間和結(jié)束時間。代碼大致是醬紫:

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

在實際的使用場景中,我們項目里往往會去獲取這個時間段類的小時數(shù)。

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

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

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;

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

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
伊人成伊人成综合网222 | 亚洲影视一区在线观看 | 婷婷色制服中文字幕 | 午夜亚洲AⅤ在线影视 | 亚洲一级免费在线免费视频 | 在线播放免费精品 |