显式转换和隐式转换不仅可以用在数学运算符,还可以自定义类型之间的显式转换和隐式转换。
示例代码如下:
//自定义 隐式转换,显示转换
- public class ConvClass1 {//类型1:隐式转换关键字implicit
- public int val; //int类型 operator运算符关键字
- public static implicit operator ConvClass2(ConvClass1 op1) {
- ConvClass2 con = new ConvClass2();
- con.val = op1.val;//隐式转换 关键字implicit
- return con;
- }
- }
- public class ConvClass2 {//类型2:显式转换关键字explicit
- public double val;//double类型
- public static explicit operator ConvClass1(ConvClass2 op2) {
- ConvClass1 con = new ConvClass1();
- checked{ con.val = (int)op2.val; }//显式转换 关键字explicit
- return con;
- }
- }
- public class Pargram{
- public stitic void Main(string[] args){
- ConvClass1 op1 = new ConvClass1();
- op1.val = 6;
- ConvClass2 op2 = op1;//隐式转换
- ConvClass2 op3 = (ConvClass2)op1;//显式转换
- Console.WriteLine(op1.val);
- Console.WriteLine(op2.val);
- Console.WriteLine(op3.val);
- }
- }