溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

隱式和顯式操作符如何在C#項目中使用

發(fā)布時間:2021-04-02 17:39:31 來源:億速云 閱讀:180 作者:Leah 欄目:開發(fā)技術(shù)

隱式和顯式操作符如何在C#項目中使用?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

什么是顯式,什么是隱式

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

int x = 100; 
double d = x;

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

double d = 100.25;
int x = d;

編譯程序時,將會出現(xiàn)下面的錯誤。

隱式和顯式操作符如何在C#項目中使用

顯而易見,上面的 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; }
    }

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

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

下面的代碼展示了如何實現(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)用程序中為若干個類寫這樣的轉(zhuǎn)換代碼,你會發(fā)現(xiàn)實現(xiàn)類之間的轉(zhuǎn)換使的代碼比較冗余,而且代碼可讀性也好不到哪里去。所以在這種場景下就是 顯式 和 隱式 操作符的用武之地。

使用隱式操作符

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

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

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 實例轉(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;
}

這時候在 Main 方法中就需要人工介入進(jìn)行強轉(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();
}

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

隱式和顯式操作符如何在C#項目中使用

關(guān)于隱式和顯式操作符如何在C#項目中使用問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI