Skip to content

Metrics averagerow gethashcode

github-actions[bot] edited this page Sep 28, 2026 · 1 revision

Development build. This page describes main, not a released package. The latest published Lodestar.Metrics is 0.4.0 — read its documentation.

Home › Metrics › Classification metrics

AverageRow.GetHashCode

A hash consistent with the generated equality, with every NaN hashed alike.

public int GetHashCode()

Returns — a hash over every member, each double through one rule that sends every NaN to the same value.

Example — a NaN and its negation are different bit patterns, and still equal and hash alike.

using Lodestar.Metrics;

AverageRow left = new("macro avg", double.NaN, 0.5, 0.5, 4);
AverageRow right = new("macro avg", -double.NaN, 0.5, 0.5, 4);

bool equal = left.Equals(right);                          // => True
bool alike = left.GetHashCode() == right.GetHashCode();  // => True

Remarks — the equality stays the one the compiler generates, under which every NaN equals every other. .NET Framework, Mono and Unity hash a NaN's sign and payload bits, so without this override two equal values could hash apart there and miss each other in a Dictionary or a HashSet (#1285).

Applies to — net10.0, netstandard2.0.

See also — AverageRow.

Clone this wiki locally