日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

如何在 C# 中使用隐式和显式操作符

發(fā)布時(shí)間:2023/12/4 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何在 C# 中使用隐式和显式操作符 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

C# 有一個(gè)鮮為人知的特性是通過定義 顯式和隱式操作符 實(shí)現(xiàn)類型之間的轉(zhuǎn)換,這篇文章我們將會(huì)討論如何使用這些 顯式 和 隱式 操作符。

什么是顯式,什么是隱式

隱式類型轉(zhuǎn)換 它是運(yùn)行時(shí)自動(dòng)幫你完成的,言外之意就是你不需要人為干預(yù),比如下面的例子就是典型的 隱式類型轉(zhuǎn)換。

int?x?=?100;? double?d?=?x;

不過下面的代碼則過不了編譯器。

double?d?=?100.25; int?x?=?d;

編譯程序時(shí),將會(huì)出現(xiàn)下面的錯(cuò)誤。

顯而易見,上面的 double 不能隱式的轉(zhuǎn)成 int,除非顯式轉(zhuǎn)換,那如何顯式呢?可以使用如下代碼。

int?x?=?100;? double?d?=?(int)?x;

人工干預(yù)后,編譯器也就放行了。

創(chuàng)建 DTO 類

接下來我們研究一下如何在 用戶自定義類型 上使用 隱式 和 顯式轉(zhuǎn)換,比如:Class,考慮下面的類。

public?class?Author{public?Guid?Id?{?get;?set;?}public?string?FirstName?{?get;?set;?}public?string?LastName?{?get;?set;?}}public?class?AuthorDto{public?string?Id?{?get;?set;?}public?string?FirstName?{?get;?set;?}public?string?LastName?{?get;?set;?}}

在上面的代碼中,定義了一個(gè) Author 實(shí)體類,然后再為 Author 定義一個(gè)數(shù)據(jù)傳輸對(duì)象 AuthorDTO,數(shù)據(jù)傳輸對(duì)象是一個(gè)數(shù)據(jù)容器,常用于在 Presentation 和 Application層 之間傳遞數(shù)據(jù)。

Model 和 DTO 之間的相互轉(zhuǎn)換

下面的代碼展示了如何實(shí)現(xiàn) Author 和 AuthorDto 之間的相互轉(zhuǎn)換。

public?AuthorDto?ConvertAuthorToAuthorDto(Author?author){AuthorDto?authorDto?=?new?AuthorDto{Id?=?author.Id.ToString(),FirstName?=?author.FirstName,LastName?=?author.LastName};return?authorDto;}public?Author?ConvertAuthorDtoToAuthor(AuthorDto?authorDto){Author?author?=?new?Author{Id?=?Guid.Parse(authorDto.Id),FirstName?=?authorDto.FirstName,LastName?=?authorDto.LastName};return?author;}

如果需要在應(yīng)用程序中為若干個(gè)類寫這樣的轉(zhuǎn)換代碼,你會(huì)發(fā)現(xiàn)實(shí)現(xiàn)類之間的轉(zhuǎn)換使的代碼比較冗余,而且代碼可讀性也好不到哪里去。所以在這種場(chǎng)景下就是 顯式 和 隱式 操作符的用武之地。

使用隱式操作符

實(shí)現(xiàn) model-dto 之間的轉(zhuǎn)換更簡(jiǎn)單粗暴的方式就是使用 隱顯式操作符,這樣就避免了冗長(zhǎng)的方法調(diào)用,讓代碼更加的直截了當(dāng)。

下面的代碼展示了如何使用 隱式操作符 將 Author實(shí)例 轉(zhuǎn)成 AuthorDto 實(shí)例。

public?static?implicit?operator?AuthorDto(Author?author) {AuthorDto?authorDto?=?new?AuthorDto();authorDto.Id?=?author.Id.ToString();authorDto.FirstName?=?author.FirstName;authorDto.LastName?=?author.LastName;return?authorDto; }

接下來看一下如何在 Main 方法中使用 隱式操作符。

static?void?Main(string[]?args) {Author?author?=?new?Author();author.Id?=?Guid.NewGuid();author.FirstName?=?"Joydip";author.LastName?=?"Kanjilal";AuthorDto?authorDto?=?author;Console.ReadKey(); }

使用顯式操作符

下面的代碼展示了如何利用 顯式操作符 將 Author 實(shí)例轉(zhuǎn)成 AuthorDto 。

public?static?explicit?operator?AuthorDto(Author?author) {AuthorDto?authorDto?=?new?AuthorDto();authorDto.Id?=?author.Id.ToString();authorDto.FirstName?=?author.FirstName;authorDto.LastName?=?author.LastName;return?authorDto; }

這時(shí)候在 Main 方法中就需要人工介入進(jìn)行強(qiáng)轉(zhuǎn)了,如下代碼所示:

static?void?Main(string[]?args) {Author?author?=?new?Author();author.Id?=?Guid.NewGuid();author.FirstName?=?"Joydip";author.LastName?=?"Kanjilal";AuthorDto?authorDto?=?(AuthorDto)author;Console.ReadKey(); }

值得注意的是,你不能在一個(gè)類中的對(duì)象轉(zhuǎn)換同時(shí)定義 顯式 和 隱式操作符,如下圖所示:

如果你定義了隱式操作符,那么對(duì)象之間的轉(zhuǎn)換可以是隱式或顯式,如果你定義了顯式操作符,那么你只能顯式的實(shí)現(xiàn)對(duì)象轉(zhuǎn)換,雖然隱式操作使用起來非常方便,但顯式操作會(huì)讓代碼意圖更明顯,可讀性更高。

譯文鏈接:https://www.infoworld.com/article/3606436/how-to-use-implicit-and-explicit-operators-in-csharp.html

總結(jié)

以上是生活随笔為你收集整理的如何在 C# 中使用隐式和显式操作符的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。