Development C# Tutorial

using System;
using System.Text;
using System.Globalization;
public struct Complex : IFormattable
{
    public Complex( double real, double imaginary ) {
        this.real = real;
        this.imaginary = imaginary;
    }
    public string ToString( string format,IFormatProvider formatProvider ) {
        StringBuilder sb = new StringBuilder();
        if( format == "DBG" ) {
            sb.Append( this.GetType().ToString() + "\n" );
            sb.AppendFormat( "\treal:\t{0}\n", real );
            sb.AppendFormat( "\timaginary:\t{0}\n", imaginary );
        } else {
            sb.Append( "( " );
            sb.Append( real.ToString(format, formatProvider) );
            sb.Append( " : " );
            sb.Append( imaginary.ToString(format, formatProvider) );
            sb.Append( " )" );
        }
        return sb.ToString();
    }
    private double real;
    private double imaginary;
}
public class MainClass
{
    static void Main() {
        CultureInfo local = CultureInfo.CurrentCulture;
        CultureInfo germany = new CultureInfo( "de-DE" );
        Complex cpx = new Complex( 12.3456, 1234.56 );
        string strCpx = cpx.ToString( "F", local );
        Console.WriteLine( strCpx );
        strCpx = cpx.ToString( "F", germany );
        Console.WriteLine( strCpx );
        Console.WriteLine( "\nDebugging output:\n{0:DBG}", cpx );
    }
}
( 12.35 : 1234.56 )
( 12,35 : 1234,56 )
Debugging output:
Complex
real: 12.3456
imaginary: 1234.56