• C#中的Explicit和Implicit


    implicit和explicit是一对转换操作符

    Implicit关键字:用于声明隐式的用户定义类型转换运算符。它可以实现2个不同类的隐式转换 ,提高代码的可读性。

    Explicit关键字:声明必须通过转换来调用的用户定义的类型转换运算符。不同于隐式转换。

     1 public class People<T>
     2     {
     3         public string Name { get; set; }
     4         public int Age { get; set; }
     5         public T Data { get; set; }
     6 
     7         public People(string name = "zhangsan", int age = 15)
     8         {
     9             this.Name = name;
    10             this.Age = age;
    11         }
    12 
    13         public People()
    14         {
    15 
    16         }
    17 
    18         public static implicit operator People<T>(int age)
    19         {
    20             return new People<T>(age: age);
    21         }
    22         public static implicit operator People<T>(string name)
    23         {
    24             return new People<T>(name: name);
    25         }
    26         public static implicit operator String(People<T> p)
    27         {
    28             return p.Name;
    29         }
    30         public static implicit operator int(People<T> p)
    31         {
    32             return p.Age;
    33         }
    34         public static explicit operator T(People<T> p)
    35         {
    36             return p.Data;
    37         }
    38         public static implicit operator People<T>(T t)
    39         {
    40             return new People<T>() { Data = t };
    41         }
    42 
    43     }

    使用:

     1   static void Main(string[] args)
     2         {
     3 
     4             People<DateTime> p = new People<DateTime>(name: "zhangsan", age: 15);
     5             int age = p;
     6             string name = p;
     7             People<DateTime> p2 = 16;
     8             People<DateTime> p3 = "lisi";
     9             People<DateTime> p4 = DateTime.Now;
    10             object data = (DateTime)p4;
    11             
    12             Console.ReadKey();
    13         }

    晕不晕~

  • 相关阅读:
    第12组 Alpha冲刺(4/6)
    第12组 Alpha冲刺(3/6)
    第12组 Alpha冲刺(2/6)
    2019软件工程实践——第四次作业
    2019软件工程实践——第三次作业
    2019软件工程实践——第二次作业
    2019软件工程实践——第一次作业
    博客园 自定义背景图片(包括动图)
    软件工程 实验一 GIT代码版本管理
    WordCounter项目(基于javase)
  • 原文地址:https://www.cnblogs.com/fanfan-90/p/12034616.html
Copyright © 2020-2023  润新知