最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# 中使用隱式和顯式操作符的示例

 更新時(shí)間:2021年04月02日 11:53:13   作者:碼農(nóng)讀書  
這篇文章主要介紹了C# 中使用隱式和顯式操作符的示例,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下

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

什么是顯式,什么是隱式

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

int x = 100; 
double d = x;

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

double d = 100.25;
int x = d;

編譯程序時(shí),將會出現(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ù)傳輸對象 AuthorDTO,數(shù)據(jù)傳輸對象是一個(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)換代碼,你會發(fā)現(xiàn)實(shí)現(xiàn)類之間的轉(zhuǎn)換使的代碼比較冗余,而且代碼可讀性也好不到哪里去。所以在這種場景下就是 顯式 和 隱式 操作符的用武之地。

使用隱式操作符

實(shí)現(xiàn) model-dto 之間的轉(zhuǎn)換更簡單粗暴的方式就是使用 隱顯式操作符,這樣就避免了冗長的方法調(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è)類中的對象轉(zhuǎn)換同時(shí)定義 顯式 和 隱式操作符,如下圖所示:

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

以上就是C# 中使用隱式和顯式操作符的示例的詳細(xì)內(nèi)容,更多關(guān)于C# 中使用隱式和顯式操作符的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#調(diào)用python腳本的方法步驟(2種)

    C#調(diào)用python腳本的方法步驟(2種)

    這篇文章主要介紹了C#調(diào)用python腳本的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • C#中按字符串截取長字符串實(shí)例

    C#中按字符串截取長字符串實(shí)例

    這篇文章主要介紹了C#中按字符串截取長字符串的實(shí)現(xiàn)方法,以實(shí)例形式展示了C#中正則匹配截取字符串的技巧,需要的朋友可以參考下
    2014-11-11
  • C#結(jié)合數(shù)據(jù)庫的數(shù)據(jù)采集器示例

    C#結(jié)合數(shù)據(jù)庫的數(shù)據(jù)采集器示例

    這篇文章主要介紹了C#結(jié)合數(shù)據(jù)庫的數(shù)據(jù)采集器,功能比較實(shí)用,需要的朋友可以參考下
    2014-07-07
  • 如何使用C#在PDF文件添加圖片印章

    如何使用C#在PDF文件添加圖片印章

    文檔中添加印章可以起一定的作用,比如,防止文件隨意被使用,或者確保文檔內(nèi)容的安全性和權(quán)威性。C#添加圖片印章其實(shí)也有很多實(shí)現(xiàn)方法,這里我使用的是免費(fèi)的第三方軟件Free Spire.PDF,向大家闡述如何以編程的方式在PDF文件中添加圖片印章
    2017-01-01
  • C#實(shí)現(xiàn)剪刀石頭布游戲

    C#實(shí)現(xiàn)剪刀石頭布游戲

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)剪刀石頭布游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • C#中數(shù)組、ArrayList和List三者的區(qū)別詳解

    C#中數(shù)組、ArrayList和List三者的區(qū)別詳解

    這篇文章主要介紹了C#中數(shù)組、ArrayList和List三者的區(qū)別詳解,對于三者之間的區(qū)別想要了解的可以進(jìn)來了解一下。
    2016-12-12
  • 基于C#實(shí)現(xiàn)壓縮和解壓文件及文件夾

    基于C#實(shí)現(xiàn)壓縮和解壓文件及文件夾

    這篇文章主要為大家詳細(xì)介紹了基于C#實(shí)現(xiàn)壓縮和解壓文件及文件夾的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • C#調(diào)用百度地圖API根據(jù)地名獲取經(jīng)緯度geocoding

    C#調(diào)用百度地圖API根據(jù)地名獲取經(jīng)緯度geocoding

    本文主要介紹了C#調(diào)用百度地圖API根據(jù)地名獲取經(jīng)緯度geocoding,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • C#自動(dòng)類型轉(zhuǎn)換與強(qiáng)制類型轉(zhuǎn)換的講解

    C#自動(dòng)類型轉(zhuǎn)換與強(qiáng)制類型轉(zhuǎn)換的講解

    今天小編就為大家分享一篇關(guān)于C#自動(dòng)類型轉(zhuǎn)換與強(qiáng)制類型轉(zhuǎn)換的講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • C#?NModbus?RTU通信實(shí)現(xiàn)方法詳解

    C#?NModbus?RTU通信實(shí)現(xiàn)方法詳解

    Modbus協(xié)議時(shí)應(yīng)用于電子控制器上的一種通用語言,通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)/串口和其它設(shè)備之間可以進(jìn)行通信,下面我們就來看看具體實(shí)現(xiàn)吧
    2024-11-11

最新評論

朝阳县| 得荣县| 临漳县| 始兴县| 色达县| 合水县| 潍坊市| 绥阳县| 苏尼特右旗| 淮阳县| 宜宾县| 湛江市| 丰顺县| 岚皋县| 麻城市| 孝感市| 辽阳市| 华亭县| 克拉玛依市| 漳州市| 临汾市| 保山市| 赤壁市| 喀什市| 枣阳市| 特克斯县| 金塔县| 肥西县| 正镶白旗| 西昌市| 南昌市| 本溪市| 麻江县| 唐山市| 通许县| 垣曲县| 抚松县| 金寨县| 新乡市| 卢氏县| 眉山市|