Create customized format for Complex : Custom Format « Development « C# / CSharp 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








14.5.Custom Format
14.5.1.Custom Object Formatting
14.5.2.Create customized format for Complex
14.5.3.Formatting Using System.Console.WriteLine()
14.5.4.The value 99999 in various formats
14.5.5.Custom Format Specifiers
14.5.6.format as currency
14.5.7.format in lowercase hex
14.5.8.format in uppercase hex
14.5.9.format as custom
14.5.10.Using the \n Character to Insert a Newline
14.5.11.Swapping the Indexed Placeholders and Corresponding Variables
14.5.12.Formatting flags
14.5.13.Upper or lower casing for hex determines if letters are upper/lowercase