IFormattable

 1  using  System;
 2 
 3  class  Point : IFormattable
 4  {
 5       public   int  x, y;
 6 
 7       public  Point( int  x,  int  y)
 8      {
 9           this .x  =  x;
10           this .y  =  y;
11      }
12 
13       public   override  String ToString() {  return  ToString( null null ); }
14 
15       public  String ToString(String format, IFormatProvider fp)
16      {
17           //  If no format is passed, display like this: (x, y).
18           if  (format  ==   null return  String.Format( " ({0}, {1}) " , x, y);
19 
20           //  For "x" formatting, return just the x value as a string
21           if  (format  ==   " x " return  x.ToString();
22 
23           //  For "y" formatting, return just the y value as a string
24           if  (format  ==   " y " return  y.ToString();
25 
26           //  For any unrecognized format, throw an exception.
27           throw   new  FormatException(String.Format( " Invalid format string: '{0}'. " , format));
28      }
29  }
30 
31 
32  public   sealed   class  App
33  {
34       static   void  Main()
35      {
36           //  Create the object.
37          Point p  =   new  Point( 5 98 );
38 
39           //  Test ToString with no formatting.
40          Console.WriteLine( " This is my point:  "   +  p.ToString());
41 
42           //  Use custom formatting style "x"
43          Console.WriteLine( " The point's x value is {0:x} " , p);
44 
45           //  Use custom formatting style "y"
46          Console.WriteLine( " The point's y value is {0:y} " , p);
47 
48           try  
49          {
50               //  Use an invalid format; FormatException should be thrown here.
51              Console.WriteLine( " Invalid way to format a point: {0:XYZ} " , p);
52          }
53           catch  (FormatException e)
54          {
55              Console.WriteLine( " The last line could not be displayed: {0} " , e.Message);
56          }
57      }
58  }
59 
60  //  This code produces the following output.
61  //  
62  //   This is my point: (5, 98)
63  //   The point's x value is 5
64  //   The point's y value is 98
65  //   The last line could not be displayed: Invalid format string: 'XYZ'.

你可能感兴趣的:(IFormattable)