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); } }
Class Interface
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 & 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); } } }