User-Defined Conversions : Conversion Operator Overload « Operator Overload « C# / CSharp Tutorial






using System;
using System.Text;

struct MyType
{
    private int value;
    
    public MyType(int value) 
    {
        this.value = value;
    }
    public static explicit operator MyType(short value){
        Console.WriteLine("public static explicit operator MyType(short value)");
        
        return new MyType();
    }
    
    public static implicit operator short(MyType myType){
        Console.WriteLine("public static implicit operator short(MyType myType)");
        return 0;
    }
    
    public static implicit operator string(MyType myType){
        Console.WriteLine("public static implicit operator string(MyType myType)");
        return "String value:";
    }
}
class MainClass
{
    public static void Main()
    {
        int s = 12;
        MyType numeral = new MyType(s);
        
        s = 165;
        numeral = (MyType) s;
        
        Console.WriteLine("as int: {0}", (int)numeral);
        Console.WriteLine("as string: {0}", (string)numeral);
        
        int s2 = numeral;
    }
}
public static explicit operator MyType(short value)
public static implicit operator short(MyType myType)
as int: 0
public static implicit operator string(MyType myType)
as string: String value:
public static implicit operator short(MyType myType)








8.4.Conversion Operator Overload
8.4.1.There are two forms of conversion operators, implicit and explicit
8.4.2.There are a few restrictions to conversion operators
8.4.3.User-Defined Conversions: Conversion Lookup
8.4.4.User-Defined Conversions