【原】兩個時間相加的運算子過載實現

weixin_34391854發表於2010-11-08

要求:兩個時間相加,得到的時間形如“xx時:xx分:xx秒”

--------------------------------------------------------------------------------------------------------------

解答:

首先編寫時間處理類

 

ExpandedBlockStart.gif時間類
 1 /// <summary>
 2 /// 時間類
 3 /// </summary>
 4 class Time
 5 {
 6     #region 域
 7 
 8     private int _hours, _minutes, _seconds;
 9 
10     #endregion
11 
12     #region 屬性
13 
14     /// <summary>
15     /// 秒
16     /// </summary>
17     public int Seconds
18     {
19         get { return _seconds; }
20         set { _seconds = value; }
21     }
22     /// <summary>
23     /// 分
24     /// </summary>
25     public int Minutes
26     {
27         get { return _minutes; }
28         set { _minutes = value; }
29     }
30     /// <summary>
31     /// 時
32     /// </summary>
33     public int Hours
34     {
35         get { return _hours; }
36         set { _hours = value; }
37     }
38 
39     #endregion
40 
41     #region 建構函式
42 
43     /// <summary>
44     /// 無參建構函式
45     /// </summary>
46     public Time()
47     {
48         this._hours = 0;
49         this._minutes = 0;
50         this._seconds = 0;
51     }
52     /// <summary>
53     /// 有參建構函式
54     /// </summary>
55     /// <param name="hours"></param>
56     /// <param name="minutes"></param>
57     /// <param name="seconds"></param>
58     public Time(int hours,int minutes,int seconds)
59     {
60         this._hours = hours;
61         this._minutes = minutes;
62         this._seconds = seconds;
63     }
64 
65     #endregion
66 
67     #region 自定義函式
68 
69     /// <summary>
70     /// 過載+函式
71     /// </summary>
72     /// <param name="time1">時間1</param>
73     /// <param name="time2">時間2</param>
74     /// <returns></returns>
75     public static Time operator +(Time time1,Time time2)
76     {
77         Time result = new Time();
78         result._seconds = time1._seconds + time2._seconds;                              // 計算秒
79         result._minutes = time1._minutes + time2._minutes + result._seconds / 60;       // 計算分
80         result._hours = time1._hours + time2._hours + result._minutes / 60;             // 計算時
81         result._seconds = result._seconds % 60;                                         // 正確顯示秒(超過60應該取餘)
82         result._minutes = result._minutes % 60;                                         // 正確顯示分(超過60應該取餘)
83         return result;
84     }
85 
86     #endregion
87 }

 

然後編寫主函式相關程式碼

ExpandedBlockStart.gif主函式
 1 class Program
 2 {
 3     static void Main(string[] args)
 4     {
 5         Time time1 = new Time(14216);       // 例項化物件1
 6         Time time2 = new Time(22652);       // 例項化物件2
 7         Time result = time1 + time2;            // 過載+運算子以計算時間
 8         Console.WriteLine("{0}時:{1}分:{2}秒", result.Hours, result.Minutes, result.Seconds);
 9         Console.ReadLine();
10     }
11 }

 

 

相關文章