Posted on 2009-07-06 15:57
Hero 阅读(167)
评论(0) 编辑 收藏 引用 所属分类:
C#积累
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'.