zoukankan      html  css  js  c++  java
  • implicit关键字和explicit关键字

    explicit关键字

    explicit关键字的作用是强制转换用户自定义的显式类型转换运算符。通常前面通用static后面用operator,一般是把当前类型转换为另一个类型(将原类型转换为目标类型)。
    举个例子:

    class A
    {
        public A(float f)
        {
            p = f;
            Console.WriteLine("p of A is " + p.ToString());
        }
        public float p { get; private set; }
        public static explicit operator B(A a)
        {
            return new B(a.p * 2);
        }
    }
    class B
    {
        public B(float f)
        {
            p = f;
            Console.WriteLine("p of B is " + p.ToString());
        }
        public float p { get; private set; }
        public static explicit operator A(B b)
        {
            return new A(b.p * 10f);
        }
    }
    

    调用方式如下:

    A a = new A(10);
    B b = (B)a;
    

    控制台输出如下:

    p of A is 10
    p of B is 20
    

    implicit关键字

    implicit关键字和explicit关键字类似,它实现自定义类型的隐式类型转换。
    还是上面的例子:

    class A
    {
        public A(float f)
        {
            p = f;
            Console.WriteLine("p of A is " + p.ToString());
        }
        public float p { get; private set; }
        public static implicit operator B(A a)
        {
            return new B(a.p * 2);
        }
    }
    class B
    {
        public B(float f)
        {
            p = f;
            Console.WriteLine("p of B is " + p.ToString());
        }
        public float p { get; private set; }
        public static implicit operator A(B b)
        {
            return new A(b.p * 10f);
        }
    }
    

    调用方式如下:

    A a = new A(10);
    B b = a;
    

    控制台输出如下:

    p of A is 10
    p of B is 20
    
    Tips

    注意的是A类到B类的”显式“和”隐式“ 转换只能定义一个,不能同时定义两个。

  • 相关阅读:
    length()
    matlab mod()&rem()
    tf调试函数
    64位win7+PCL1.6.0+VS2010,64位win10+PCL1.6.0+VS2010
    pcl 1.8 + VS 2010 在win7 x64下的配置
    Qt在vs2010下的配置
    VS2010 win7 QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序
    [POI2012]ROZ-Fibonacci Representation (贪心)
    CF 666C & 牛客 36D
    数位dp练习
  • 原文地址:https://www.cnblogs.com/lsy1991/p/10309166.html
Copyright © 2011-2022 走看看