Repository navigation
Advanced Usage
This library is intentionally simple — a single struct with unit extension methods and standard operators. There isn't a large surface of advanced features, but a few things are worth calling out.
Because every Area is stored internally as square meters, you can freely mix creation methods from different namespaces in the same expression:
using MarcusMedina.Units.Area.Metric;
using MarcusMedina.Units.Area.US;
Area combined = 1.Hectares() + 1.Acres();
double totalSquareMeters = combined.ToSquareMeters(); // ≈ 14,046.86Dividing one Area by another returns a plain double ratio (not an Area), which is useful for "how many times bigger" comparisons:
using MarcusMedina.Units.Area.SwedishOld;
Area big = 4.Tunnland();
Area small = 1.Kappland();
double ratio = big / small; // 128Dividing an Area by a double instead scales it down and still returns an Area:
Area half = big / 2.0;Area implements IComparable<Area> and all six comparison operators, so areas from different unit families compare correctly without manual conversion:
using MarcusMedina.Units.Area.Metric;
using MarcusMedina.Units.Area.British;
bool bigger = 1.Acres() > 1.Roods(); // true — a rood is a quarter acreArea.ToString() prints the square-meter value using invariant culture, formatted as "{value} m²" — useful for quick logging without writing your own formatter:
Console.WriteLine(4.Tunnland()); // "4936.32 m²"There is no built-in support for formatting in a different unit — call the relevant To...() method and format the double yourself if you need e.g. "4 tunnland".