using System;
public struct Complex
{
public Complex( double real, double imaginary ) {
this.real = real;
this.imaginary = imaginary;
}
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 bool( Complex c ) {
return (c.real != 0) || (c.imaginary != 0);
}
private double real;
private double imaginary;
}
public class MainClass
{
static void Main() {
Complex cpx1 = new Complex( 1.0, 3.0 );
if( cpx1 ) {
Console.WriteLine( "cpx1 is true" );
} else {
Console.WriteLine( "cpx1 is false" );
}
Complex cpx2 = new Complex( 0, 0 );
Console.WriteLine( "cpx2 is {0}", cpx2 ? "true" : "false" );
}
}
cpx1 is true
cpx2 is false
8.10.bool operator |
| 8.10.1. | bool operator for Complex |