main
1using System;
2
3namespace jive
4{
5 public class Year
6 {
7 readonly int the_underlying_year;
8
9 public Year(int year) : this(new DateTime(year, 01, 01))
10 {
11 }
12
13 public Year(DateTime date)
14 {
15 the_underlying_year = date.Year;
16 }
17
18 static public implicit operator Year(int year)
19 {
20 return new Year(year);
21 }
22
23 public bool Equals(Year obj)
24 {
25 if (ReferenceEquals(null, obj)) return false;
26 if (ReferenceEquals(this, obj)) return true;
27 return obj.the_underlying_year == the_underlying_year;
28 }
29
30 public override bool Equals(object obj)
31 {
32 if (ReferenceEquals(null, obj)) return false;
33 if (ReferenceEquals(this, obj)) return true;
34 if (obj.GetType() != typeof (Year)) return false;
35 return Equals((Year) obj);
36 }
37
38 public override int GetHashCode()
39 {
40 return the_underlying_year;
41 }
42
43 public bool represents(DateTime time)
44 {
45 return time.Year.Equals(the_underlying_year);
46 }
47
48 public override string ToString()
49 {
50 return the_underlying_year.ToString();
51 }
52 }
53}