C# 转换运算符:implicit(隐式),explicit(显示)

//A类  
class Cls1
{
    public string name;

    //构造函数  
    public Cls1(string name)
    {
        this.name = name;
    }

    //implicit:表示隐式转换,如从 B -> A 只需直接赋值(A = B)  
    //此处将:A对象隐式转换为B对象  
    public static implicit operator Cls2(Cls1 value)
    {
        return new Cls2(value.name + " 变 B");
    }
}

//妖怪类  
class Cls2
{
    public string name;

    //构造函数  
    public Cls2(string name)
    {
        this.name = name;
    }

    //explicti:表示显式转换,如从 A -> B 必须进行强制类型转换(B = (B)A)  
    //此处将:B对象显示转换为A对象  
    public static explicit operator Cls1(Cls2 value)
    {
        return new Cls1(value.name + " 变 A");
    }
}

class Program
{
    //程序入口  
    static void Main(string[] args)
    {
        //隐式转换:A变B
        Cls2 cls2 = new Cls1("A");
        Console.WriteLine(cls2.name);    //输出:A,变B

        //显示转换:B变A
        Cls1 cls1 = (Cls1)new Cls2("B");
        Console.WriteLine(cls1.name);     //输出:B,变A
        Console.ReadLine();
    }
}
原文地址:https://www.cnblogs.com/valor-xh/p/6074066.html