Skip to content

Commit e764841

Browse files
committed
Added Area.cs.
1 parent 92c8fe1 commit e764841

File tree

5 files changed

+206
-0
lines changed

5 files changed

+206
-0
lines changed

Src/UnitsNet/Area.cs

Lines changed: 202 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,202 @@
1+
using System;
2+
3+
namespace UnitsNet
4+
{
5+
public struct Area
6+
{
7+
private const double SquareKilometersToSquareMetersRatio = 1E6;
8+
private const double SquareDecimetersToSquareMetersRatio = 1E-2;
9+
private const double SquareCentimetersToSquareMetersRatio = 1E-4;
10+
private const double SquareMillimetersToSquareMetersRatio = 1E-6;
11+
12+
public readonly double SquareMeters;
13+
14+
public Area(double squareMeters)
15+
{
16+
SquareMeters = squareMeters;
17+
}
18+
19+
#region Unit Properties
20+
21+
public double SquareKilometers
22+
{
23+
get { return SquareMeters/SquareKilometersToSquareMetersRatio; }
24+
}
25+
26+
public double SquareDecimeters
27+
{
28+
get { return SquareMeters/SquareDecimetersToSquareMetersRatio; }
29+
}
30+
31+
public double SquareCentimeters
32+
{
33+
get { return SquareMeters/SquareCentimetersToSquareMetersRatio; }
34+
}
35+
36+
public double SquareMillimeters
37+
{
38+
get { return SquareMeters/SquareMillimetersToSquareMetersRatio; }
39+
}
40+
41+
#endregion
42+
43+
#region Static
44+
45+
/// <summary>
46+
/// The maximum representable area in square meters.
47+
/// </summary>
48+
public static Area Max
49+
{
50+
get { return new Area(double.MaxValue); }
51+
}
52+
53+
/// <summary>
54+
/// The smallest representable area in square meters.
55+
/// </summary>
56+
public static Area Min
57+
{
58+
get { return new Area(double.MinValue); }
59+
}
60+
61+
public static Area Zero
62+
{
63+
get { return new Area(); }
64+
}
65+
66+
public static Area FromSquareKilometers(double squareKilometers)
67+
{
68+
return new Area(squareKilometers*SquareKilometersToSquareMetersRatio);
69+
}
70+
71+
public static Area FromSquareMeters(double squareMeters)
72+
{
73+
return new Area(squareMeters);
74+
}
75+
76+
public static Area FromSquareDecimeters(double squareDecimeters)
77+
{
78+
return new Area(squareDecimeters*SquareDecimetersToSquareMetersRatio);
79+
}
80+
81+
public static Area FromSquareCentimeters(double squareCentimeters)
82+
{
83+
return new Area(squareCentimeters*SquareCentimetersToSquareMetersRatio);
84+
}
85+
86+
public static Area FromSquareMillimeters(double squareMillimeters)
87+
{
88+
return new Area(squareMillimeters*SquareMillimetersToSquareMetersRatio);
89+
}
90+
91+
#endregion
92+
93+
#region Arithmetic operators
94+
95+
public static Area operator -(Area right)
96+
{
97+
return FromSquareMeters(-right.SquareMeters);
98+
}
99+
100+
public static Area operator +(Area left, Area right)
101+
{
102+
return FromSquareMeters(left.SquareMeters + right.SquareMeters);
103+
}
104+
105+
public static Area operator -(Area left, Area right)
106+
{
107+
return FromSquareMeters(left.SquareMeters - right.SquareMeters);
108+
}
109+
110+
public static Area operator *(double left, Area right)
111+
{
112+
return FromSquareMeters(left*right.SquareMeters);
113+
}
114+
115+
public static Area operator *(Area left, double right)
116+
{
117+
return FromSquareMeters(left.SquareMeters*right);
118+
}
119+
120+
public static Area operator /(Area left, double right)
121+
{
122+
return FromSquareMeters(left.SquareMeters/right);
123+
}
124+
125+
public static double operator /(Area left, Area right)
126+
{
127+
return left.SquareMeters/right.SquareMeters;
128+
}
129+
130+
#endregion
131+
132+
#region Comparable operators
133+
134+
public static bool operator <=(Area left, Area right)
135+
{
136+
return left.SquareMeters <= right.SquareMeters;
137+
}
138+
139+
public static bool operator >=(Area left, Area right)
140+
{
141+
return left.SquareMeters >= right.SquareMeters;
142+
}
143+
144+
public static bool operator <(Area left, Area right)
145+
{
146+
return left.SquareMeters < right.SquareMeters;
147+
}
148+
149+
public static bool operator >(Area left, Area right)
150+
{
151+
return left.SquareMeters > right.SquareMeters;
152+
}
153+
154+
public static bool operator ==(Area left, Area right)
155+
{
156+
return left.SquareMeters == right.SquareMeters;
157+
}
158+
159+
public static bool operator !=(Area left, Area right)
160+
{
161+
return !(left.SquareMeters == right.SquareMeters);
162+
}
163+
164+
#endregion
165+
166+
#region Equality / IComparable
167+
168+
public int CompareTo(object obj)
169+
{
170+
if (obj == null) throw new ArgumentNullException("obj");
171+
if (!(obj is Area)) throw new ArgumentException("Expected type Area.", "obj");
172+
return CompareTo((Area) obj);
173+
}
174+
175+
public int CompareTo(Area other)
176+
{
177+
return SquareMeters.CompareTo(other.SquareMeters);
178+
}
179+
180+
public override bool Equals(object obj)
181+
{
182+
if (obj == null || !(obj is Area))
183+
{
184+
return false;
185+
}
186+
187+
return SquareMeters.CompareTo(((Area) obj).SquareMeters) == 0;
188+
}
189+
190+
public override int GetHashCode()
191+
{
192+
return base.GetHashCode();
193+
}
194+
195+
#endregion
196+
197+
public override string ToString()
198+
{
199+
return SquareMeters + " m²";
200+
}
201+
}
202+
}

Src/UnitsNet/UnitsNet.net35.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
<Reference Include="System.Xml" />
3939
</ItemGroup>
4040
<ItemGroup>
41+
<Compile Include="Area.cs" />
4142
<Compile Include="ElectricPotential.cs" />
4243
<Compile Include="EnumUtils.cs" />
4344
<Compile Include="Length.cs" />

Src/UnitsNet/UnitsNet.netcore45.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@
9595
<!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->
9696
</ItemGroup>
9797
<ItemGroup>
98+
<Compile Include="Area.cs" />
9899
<Compile Include="ElectricPotential.cs" />
99100
<Compile Include="EnumUtils.cs" />
100101
<Compile Include="Force.cs" />

Src/UnitsNet/UnitsNet.pcl.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
<!-- A reference to the entire .NET Framework is automatically included -->
3636
</ItemGroup>
3737
<ItemGroup>
38+
<Compile Include="Area.cs" />
3839
<Compile Include="ElectricPotential.cs" />
3940
<Compile Include="EnumUtils.cs" />
4041
<Compile Include="Force.cs" />

Src/UnitsNet/UnitsNet.sl4.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
<Reference Include="System.Windows.Browser" />
5757
</ItemGroup>
5858
<ItemGroup>
59+
<Compile Include="Area.cs" />
5960
<Compile Include="EnumUtils.cs" />
6061
<Compile Include="Force.cs" />
6162
<Compile Include="Length.cs" />

0 commit comments

Comments
 (0)