Mega Code Archive

 
Categories / C# Tutorial / Operator Overload
 

Explicitimplicit operator for Complex

using System; public struct Complex {     public Complex( double real, double imaginary ) {         this.real = real;         this.imaginary = imaginary;     }     // System.Object override     public override string ToString() {         return String.Format( "({0}, {1})", real, imaginary );     }     public double Magnitude {         get {             return Math.Sqrt( Math.Pow(this.real, 2) + Math.Pow(this.imaginary, 2) );         }     }     public static implicit operator Complex( double d ) {         return new Complex( d, 0 );     }     public static explicit operator double( Complex c ) {         return c.Magnitude;     }     private double real;     private double imaginary; } public class EntryPoint {     static void Main() {         Complex cpx1 = new Complex( 1.0, 3.0 );         Complex cpx2 = 2.0;         // Use implicit operator.         double d = (double) cpx1;   // Use explicit operator.         Console.WriteLine( "cpx1 = {0}", cpx1 );         Console.WriteLine( "cpx2 = {0}", cpx2 );         Console.WriteLine( "d = {0}", d );     } } cpx1 = (1, 3) cpx2 = (2, 0) d = 3.16227766016838