C#中的Explicit和Implicit

implicit和explicit是一对转换操作符

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

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

 1 public class People
 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(int age)
19         {
20             return new People(age: age);
21         }
22         public static implicit operator People(string name)
23         {
24             return new People(name: name);
25         }
26         public static implicit operator String(People p)
27         {
28             return p.Name;
29         }
30         public static implicit operator int(People p)
31         {
32             return p.Age;
33         }
34         public static explicit operator T(People p)
35         {
36             return p.Data;
37         }
38         public static implicit operator People(T t)
39         {
40             return new People() { Data = t };
41         }
42 
43     }

使用:

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

晕不晕~

你可能感兴趣的:(C#中的Explicit和Implicit)