Csharp/C Sharp/Class Interface/ToString

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

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

<source lang="csharp">

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() );
  }

}

      </source>


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

<source lang="csharp"> /* 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}\n", 
                            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);
       }
   }

}


      </source>


Demonstrate ToString()

<source lang="csharp"> /* 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); 

 } 

}


      </source>


Format data in ToString method.

<source lang="csharp">


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
  }

}

      </source>


Illustrates how to override the ToString() method

<source lang="csharp"> /* 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());
 }

}

      </source>


.NET Frameworks Overview:Custom Object Formatting

<source lang="csharp"> 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);
   }

}

      </source>


Overriding the ToString() Method

<source lang="csharp"> 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());
 }

}

      </source>