狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C#中兩個關鍵字 Explicit 和 Implicit,你知道嗎?

admin
2024年10月10日 11:12 本文熱度 598
轉自:句幽
cnblogs.com/uoyo/p/12157709.html

簡介

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

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


場景

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


誕生緣由

  • 曾經學過的內容可能過不了多久就忘了,我們需要一些文章來幫我們查漏補缺。

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

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


文章質量

當然,并不意味著它篇幅短就質量差。所謂麻雀雖小五臟俱全,我們會盡可能保證利用最少的文字去詳細的闡述內容。


正文

好吧,直接開們見山來介紹今天的主角:Explicit 和 Implicit。

我記得我第一次見到這兩個關鍵字還是在一次C#基礎測試中。當時已經入C#的坑有兩年多了吧,自認為基礎的題應該不在話下吧。

然后小手一點視頻網頁上的進行測試按鈕,請聽題:“請問Explicit的作用是什么?”。我:“%……&……,這他喵的什么東西?是C#的東西?”。

后來在公司問了一些老鳥,好像大家也并不知道這兩個關鍵字,畢竟它和static、operator這些大佬比起來,真的太不顯眼了。


它到底是個什么東西

先來直接看一下msdn對它的解釋吧:

explicit 關鍵字用于聲明必須使用強制轉換來調用的用戶定義的類型轉換運算符

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


來看它的用途

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

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

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

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

是的,一開始我們就是醬紫寫的。但是寫起來很不爽,每次都要復制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 后面跟需要轉換的類型
   public static implicit operator double(DateTimeRange timeRange)
   {
       return (timeRange.EndTime - timeRange.StartTime).TotalHours;
   }
}

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

double hours = timeRange;

我*,就是這么灑脫。如果不懂這個關鍵字的同事閱讀到這兒,它可能還會很懵逼:“我擦,這個類型明明不是那個類型啊,那個類型又怎么成了這個類型,它們怎么還能等于起來……………………”。此時的你,只能對他微微一笑。

想一想你會在什么場景使用該關鍵字呢?DTO轉換?已有代碼不能變更只能擴展?…………


結束

implicit和Explicit都是起到類型轉換的作用,它們的區別是轉換的時候一個需要顯式轉換而已,剛才我們那個場景用了隱式轉換,如果是顯式轉換的話就需要 double hours = (double)timeRange; 來寫了。

該關鍵字只能在類內部使用哦,放心,強大的VS會給你提示。

-EOF -


該文章在 2024/10/10 17:54:12 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved