.NET Frameworks Overview:Custom Object Formatting


   


using System;
class Employee: IFormattable
{
    public Employee(int id, string firstName, string lastName)
    {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
    }
    public string ToString (string format, IFormatProvider fp) 
    {
        if ((format != null) && (format.Equals("F")))
        return(String.Format("{0}: {1}, {2}", 
        id, lastName, firstName));
        else
        return(id.ToString(format, fp));
    }
    int    id;
    string    firstName;
    string    lastName;
}
public class CustomObjectFormatting
{
    public static void Main()
    {
        Employee fred = new Employee(123, "AAA", "BBB");
        Console.WriteLine("No format: {0}", fred);
        Console.WriteLine("Full format: {0:F}", fred);
    }
}

           
          


Overriding the ToString() Method


   


using System;
   
public class Name {
  public string firstName;
  public string lastName;
   
  public Name(string firstName, string lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
  }
   
  public void Display() {
    Console.WriteLine("firstName = " + firstName);
    Console.WriteLine("lastName = " + lastName);
  }
   
  // override the ToString() method
  public override string ToString() {
    return firstName + " " + lastName;
  }
}

class Test{
  public static void Main() {
    Name myName = new Name("T", "M");
    Name myOtherName = new Name("P", "B");
   
    // call the ToString() method for the Name objects
    Console.WriteLine("myName.ToString() = " + myName.ToString());
    Console.WriteLine("myOtherName.ToString() = " + myOtherName.ToString());
  }
}
           
          


Format data in ToString method.

using System;

public class Time1
{
private int hour;
private int minute;
private int second;

public void SetTime( int h, int m, int s )
{
hour = ( ( h >= 0 && h < 24 ) ? h : 0 ); minute = ( ( m >= 0 && m < 60 ) ? m : 0 ); second = ( ( s >= 0 && s < 60 ) ? s : 0 ); } public string ToUniversalString() { return string.Format( "{0:D2}:{1:D2}:{2:D2}", hour, minute, second ); } public override string ToString() { return string.Format( "{0:D2}:{1:D2}:{2:D2} {3}", ( ( hour == 0 || hour == 12 ) ? 12 : hour % 12 ), minute, second, ( hour < 12 ? "AM" : "PM" ) ); } } public class MemberAccessTest { public static void Main( string[] args ) { Time1 time = new Time1(); time.hour = 7; // error: hour has private access in Time1 time.minute = 15; // error: minute has private access in Time1 time.second = 30; // error: second has private access in Time1 } } [/csharp]

class declaration maintains the time in 24-hour format and ToString Method

using System;

public class Time1
{
private int hour; // 0 – 23
private int minute; // 0 – 59
private int second; // 0 – 59

public void SetTime( int h, int m, int s )
{
hour = ( ( h >= 0 && h < 24 ) ? h : 0 ); minute = ( ( m >= 0 && m < 60 ) ? m : 0 ); second = ( ( s >= 0 && s < 60 ) ? s : 0 ); } public string ToUniversalString() { return string.Format( "{0:D2}:{1:D2}:{2:D2}", hour, minute, second ); } public override string ToString() { return string.Format( "{0}:{1:D2}:{2:D2} {3}", ( ( hour == 0 || hour == 12 ) ? 12 : hour % 12 ), minute, second, ( hour < 12 ? "AM" : "PM" ) ); } } public class Time1Test { public static void Main( string[] args ) { Time1 time = new Time1(); Console.WriteLine( time.ToUniversalString() ); Console.WriteLine( time.ToString() ); time.SetTime( 13, 27, 6 ); Console.WriteLine( time.ToUniversalString() ); Console.WriteLine( time.ToString() ); time.SetTime( 99, 99, 99 ); Console.WriteLine( time.ToUniversalString() ); Console.WriteLine( time.ToString() ); } } [/csharp]

Demonstrate ToString()


   

/*
C#: The Complete Reference 
by Herbert Schildt 

Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/


// Demonstrate ToString() 
 
using System; 
 
class MyClass { 
  static int count = 0; 
  int id; 
 
  public MyClass() { 
    id = count; 
    count++; 
  } 
 
  public override string ToString() { 
    return "MyClass object #" + id; 
  } 
} 
 
public class Test { 
  public static void Main() { 
    MyClass ob1 = new MyClass(); 
    MyClass ob2 = new MyClass(); 
    MyClass ob3 = new MyClass(); 
 
    Console.WriteLine(ob1); 
    Console.WriteLine(ob2); 
    Console.WriteLine(ob3); 
 
  } 
}


           
          


Illustrates how to override the ToString() method


   

/*
Mastering Visual C# .NET
by Jason Price, Mike Gunderloy

Publisher: Sybex;
ISBN: 0782129110
*/

/*
  Example7_7.cs illustrates how to override the ToString() method
*/

using System;


// declare the Car class
class Car
{

  // declare the fields
  public string make;
  public string model;

  // define a constructor
  public Car(string make, string model)
  {
    this.make = make;
    this.model = model;
  }

  // override the ToString() method
  public override string ToString()
  {
    return make + " " + model;
  }

}


public class Example7_7
{

  public static void Main()
  {

    // create Car objects
    Console.WriteLine("Creating Car objects");
    Car myCar = new Car("Toyota", "MR2");
    Car myOtherCar = new Car("Porsche", "Boxter");

    // call the ToString() method for the Car objects
    Console.WriteLine("myCar.ToString() = " +
      myCar.ToString());
    Console.WriteLine("myOtherCar.ToString() = " +
      myOtherCar.ToString());

  }

}

           
          


demonstrates overriding the ToString() method to provide a custom string output


   

/*
C# Programming Tips &amp; Techniques
by Charles Wright, Kris Jamsa

Publisher: Osborne/McGraw-Hill (December 28, 2001)
ISBN: 0072193794
*/
//  tm1.cs - demonstrates overriding the ToString() method to provide a custom
//           string output.
//
//           Compile this program using the following command line:
//               D:>csc tm1.cs
//
namespace nsStructure
{
    using System;
    using System.Globalization;
    public struct tm
    {
        public int tm_sec;       // Seconds after the minute
        public int tm_min;       // Minutes after the hour 
        public int tm_hour;      // Hours since midnight
        public int tm_mday;      // The day of the month
        public int tm_mon;       // The month (January = 0)
        public int tm_year;      // The year (00 = 1900)
        public int tm_wday;      // The day of the week (Sunday = 0)
        public int tm_yday;      // The day of the year (Jan. 1 = 1)
        public int tm_isdst;     // Flag to indicate if DST is in effect
        public override string ToString()
        {
            const string wDays = "SunMonTueWedThuFriSat";
            const string months = "JanFebMarAprMayJunJulAugSepOctNovDec";
            return (String.Format ("{0} {1} {2,2:00} " + 
                            "{3,2:00}:{4,2:00}:{5,2:00} {6}
", 
                             wDays.Substring (3 * tm_wday, 3),
                             months.Substring (3 * tm_mon, 3),
                             tm_mday, tm_hour, tm_min,
                             tm_sec, tm_year + 1900));
        }
    }
    public class tm1
    {
        static public void Main()
        {
            DateTime timeVal = DateTime.Now;
            tm tmNow = LocalTime (timeVal);
            Console.WriteLine (tmNow);
        }
        static public tm LocalTime(DateTime tmVal)
        {
            tm time;
            time.tm_sec = tmVal.Second;
            time.tm_min = tmVal.Minute;
            time.tm_hour = tmVal.Hour;
            time.tm_mday = tmVal.Day;
            time.tm_mon = tmVal.Month - 1;
            time.tm_year = tmVal.Year - 1900;
            time.tm_wday = (int) tmVal.DayOfWeek;
            time.tm_yday = tmVal.DayOfYear;
            TimeZone tz = TimeZone.CurrentTimeZone;
            time.tm_isdst = tz.IsDaylightSavingTime (tmVal) == true ? 1 : 0;
            return (time);
        }
    }
}