.net 隐式自定义类型转换运算符 static implicit operator

今天写代码的时候遇到了入场语法:

public static implicit operator T1(T2 t) 
{ 
        return new T1{ T1.Name = t.Name } 
}

看着不是一个方法,也不是一个构造函数,作为工作多年的.net程序员竟然没见过这种修饰符,后面才知道这是  隐式的自定义类型转换运算符

T1作为目标类型

T2作为源类型

用 static implicit operator 修饰符 可以直接将T2隐式转换为T1

下面用一个例子来简单说明一下:

创建一个学生类和一个用户类:Student.cs   User.cs

public class Student
    {
        public string StudentId { get; set; }
        public string StudentName { get; set; }

        public string ClassName { get; set; }
        
    }


    public class User
    {
        public string UserId { get; set; }

        public string UserName { get; set; }

        public string Password { get; set; }
       
    }

接着就是重点,在学生类添加隐式转换:

        public static implicit operator Student(User user)
        {
            return new Student
            {
                StudentId = user.UserId,
                StudentName = user.UserName,
                ClassName = "一年级"
            };
        }

写一个测试的类:

        public Student GetStudent()
        {
            var user = new User();
            user.UserName = "小王";
            user.UserId = "001";
            user.Password = "123";
            return user;
        }

可以看到接口希望返回一个学生对象,方法里面却返回了一个User对象,神奇的是也没有报错,运行看一下:

调用后成功返回了一个学生对象,是不是很神奇!

我觉得用这种隐式类型转换可以实现实体到DTO的映射,就是不知道这么写运行效率如何,感兴趣的可以研究一下。

相关推荐

  1. 【mysql】有关mysql查询类型转换的问题

    2023-12-22 10:04:02       35 阅读
  2. js中如何进行类型转换

    2023-12-22 10:04:02       14 阅读
  3. C#中的类型转换和显类型转换

    2023-12-22 10:04:02       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-22 10:04:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-22 10:04:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-22 10:04:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-22 10:04:02       20 阅读

热门阅读

  1. 访问者模式

    2023-12-22 10:04:02       38 阅读
  2. 【HTML5】HTML5 语音合成

    2023-12-22 10:04:02       37 阅读
  3. 最小二乘法

    2023-12-22 10:04:02       43 阅读
  4. 【打卡】牛客网:BM69 把数字翻译成字符串

    2023-12-22 10:04:02       33 阅读
  5. 《漫画算法》笔记——内存管理算法LRU

    2023-12-22 10:04:02       35 阅读
  6. 2866. 美丽塔 II(单调栈)

    2023-12-22 10:04:02       49 阅读
  7. 技术面试的斗智斗勇III

    2023-12-22 10:04:02       43 阅读
  8. Lua脚本在Redis中的高效应用

    2023-12-22 10:04:02       52 阅读
  9. LeetCode day29

    2023-12-22 10:04:02       55 阅读
  10. 基于OpenCV的视频流处理方法

    2023-12-22 10:04:02       41 阅读