文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-14 10:08

关注

隐式和显式操作符如何在C#项目中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

什么是显式,什么是隐式

隐式类型转换 它是运行时自动帮你完成的,言外之意就是你不需要人为干预,比如下面的例子就是典型的 隐式类型转换。

int x = 100; double d = x;

不过下面的代码则过不了编译器。

double d = 100.25;int x = d;

编译程序时,将会出现下面的错误。

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

显而易见,上面的 double 不能隐式的转成 int,除非显式转换,那如何显式呢?可以使用如下代码。

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

人工干预后,编译器也就放行了。

创建 DTO 类

接下来我们研究一下如何在 用户自定义类型 上使用 隐式 和 显式转换,比如: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 定义一个数据传输对象 AuthorDTO,数据传输对象是一个数据容器,常用于在 Presentation 和 Application层 之间传递数据。

Model 和 DTO 之间的相互转换

下面的代码展示了如何实现 Author 和 AuthorDto 之间的相互转换。

        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;        }

如果需要在应用程序中为若干个类写这样的转换代码,你会发现实现类之间的转换使的代码比较冗余,而且代码可读性也好不到哪里去。所以在这种场景下就是 显式 和 隐式 操作符的用武之地。

使用隐式操作符

实现 model-dto 之间的转换更简单粗暴的方式就是使用 隐显式操作符,这样就避免了冗长的方法调用,让代码更加的直截了当。

下面的代码展示了如何使用 隐式操作符 将 Author实例 转成 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 实例转成 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 方法中就需要人工介入进行强转了,如下代码所示:

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();}

值得注意的是,你不能在一个类中的对象转换同时定义 显式 和 隐式操作符,如下图所示:

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

关于隐式和显式操作符如何在C#项目中使用问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯