C# IFormattable 接口重写

Posted 指间的徘徊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# IFormattable 接口重写相关的知识,希望对你有一定的参考价值。

 1  public class Racer : IComparable<Racer>, IFormattable
 2   {
 3     public int Id { get; private set; }
 4     public string FirstName { get; set; }
 5     public string LastName { get; set; }
 6     public string Country { get; set; }
 7     public int Wins { get; set; }
 8 
 9     public Racer(int id, string firstName, string lastName, string country = null, int wins = 0)
10     {
11       this.Id = id;
12       this.FirstName = firstName;
13       this.LastName = lastName;
14       this.Country = country;
15       this.Wins = wins;
16     }
17 
18     public override string ToString()
19     {
20       return String.Format("{0} {1}", FirstName, LastName);
21     }
22 
23     public string ToString(string format, IFormatProvider formatProvider)
24     {
25       if (format == null) format = "N";
26       switch (format.ToUpper())
27       {
28         case "N": // name
29           return ToString();
30         case "F": // first name
31           return FirstName;
32         case "L": // last name
33           return LastName;
34         case "W": // Wins
35           return String.Format("{0}, Wins: {1}", ToString(), Wins);
36         case "C": // Country
37           return String.Format("{0}, Country: {1}", ToString(), Country);
38         case "A": // All
39           return String.Format("{0}, {1} Wins: {2}", ToString(), Country, Wins);
40         default:
41           throw new FormatException(String.Format(formatProvider,
42                 "Format {0} is not supported", format));
43       }
44     }
45 
46     public string ToString(string format)
47     {
48       return ToString(format, null);
49     }
50 
51     public int CompareTo(Racer other)
52     {
53       int compare = this.LastName.CompareTo(other.LastName);
54       if (compare == 0)
55         return this.FirstName.CompareTo(other.FirstName);
56       return compare;
57     }
58   }

 

以上是关于C# IFormattable 接口重写的主要内容,如果未能解决你的问题,请参考以下文章

是否可以动态编译和执行 C# 代码片段?

java 代码片段

C# 重写IComparer 接口

c#如何在父类(或是接口)当中定义一个子类必须要重写的字段(属性)?

三:继承

转载 [c#] 虚函数(Virtual),抽象函数(abstract)和接口的区别