我們知道,在c#中,如果兩個型別沒有繼承關係 ,是不能相互值賦的,但有兩個關鍵字implicit和explicit,可以讓 date date = datetime.now這樣的賦值成為可能。
注:c#是沒有date型別的,但datetime有date屬性 datetime.date,但這個屬性本質上是個datetime型別,只不過時間是00:00:00
using這裡的date只是簡單封裝,可根據自己的需求進行精確處理。system;
using
static
system.console;
namespace
keywordsdemo");
writeline($
"year:");
writeline($
"month:");
writeline($
"day:");
//把date轉成datetime型別
var datetime =(datetime)date;
writeline($
"datetime:");
}public
struct
date
}public
intmonth
}public
intday
}public
static
implicit
operator
date(datetime datetime)
public
static
explicit
operator
datetime(date date)
public
override
string
tostring()}}
}
date date = datetime.parse("2030-01-01 12:12:12");會呼叫public static implicit operator date(datetime datetime)方法。
var datetime = (datetime)date;會呼叫public static explicit operator datetime(date date)方法。
implicit和explicit為我們又提供了一種「打通」兩種型別的方式。
Explicit和Implicit 的Dto轉換
剛好專案中也是經常用到 model和dto做轉換,應該有很多同學都會遇到這種 比如 這樣乙個model 對應這樣乙個dto 有新同學可能會問model和dto不是基本一樣麼,為啥還要重複建,這個我個人理解就是 model負責對內,dto對外,dto屬性不一定和model 一致,但是會包含model的...
不忘本 explicit和implicit修飾符
返回目錄 部分內容來自msdn implicit關鍵字用於宣告隱式的使用者定義型別轉換運算子。如果轉換過程可以確保不會造成資料丟失,則可使用該關鍵字在使用者定義型別和其他型別之間進行隱式轉換。1 class digit23 67public double val 89 1011 1213 user ...
C 運算子過載和 implicit關鍵字
運算子過載是指允許使用者使用使用者定義的型別編寫表示式的能力。它允許使用者定義的型別與預定義的型別具有相同的功能。implicit關鍵字用於宣告隱式的使用者定義型別轉換運算子。如果轉換過程可以確保不會造成資料丟失,則可使用該關鍵字在使用者定義型別和其他型別之間進行隱式轉換。public class ...